asp.net mvc 4.6下拉列表提供“ System.ArgumentNullException:'值不能为null。参数名称:项目的“错误”>

问题描述 投票:0回答:1

我尝试过MVC模型以具有存储过程

API控制器CreateControllerCreate View

由于某些原因,当我尝试使用Dropdownlist时,它出错并指向View

System.ArgumentNullException:'值不能为null。

参数名称:项目'

<div class="form-group">
    @Html.LabelFor(model => model.LH, htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
       @Html.DropDownListFor(r => r.LH, new SelectList(ViewBag.Type, "Value", "Text"), new { @class = 
       "form-control" })
       @Html.ValidationMessageFor(model => model.LH, "", new { @class = "text-danger" })
    </div>
</div>

上面是我的视图

]中的代码>
private ELSEntities db = new ELSEntities();

        public void Dropdownlist()
        {
            //Populate my List
            IList<SelectListItem> ActivityType = new List<SelectListItem>();
            ActivityType.Add(new SelectListItem { Text = "", Value = ""});
            ActivityType.Add(new SelectListItem { Text = "Video", Value = "Video" });
            ActivityType.Add(new SelectListItem { Text = "Test", Value = "Test" });
            //-----Convertion SelectListItem to SelectList          
            SelectList actT = new SelectList(ActivityType, "Value", "Text","0");
            ViewBag.Type = actT;
        }

        //Create controllers for the view
        public ActionResult Create()
        {
            Dropdownlist();
            return View();
        }

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create([Bind] MultipleActivityClass mta)
        {
            if (ModelState.IsValid)
            {
                HttpClient hc = new HttpClient();
                hc.BaseAddress = new Uri("http://localhost:53132/api/MultiAct");


                var c = hc.PostAsJsonAsync<MultipleActivityClass>("MultiAct", mta);
                c.Wait();
            }
            return View(mta);
        }

这是我的Controller

用于创建
        public IHttpActionResult MultiActCreate(MultipleActivityClass mt)
        {
            ELSEntities db = new ELSEntities();
            //The store procedure name: MultipleActivity
            db.MultipleActivity(mt.LH);
            db.SaveChanges();
            return Ok();
        }

这是我在Controller中使用的API控制器,它使用类MultipleActivityClass

根据Stored Procedure
]插入
    public class MultipleActivityClass
    {
        public string LH { get; set; }
    }

所以总有解决此问题的方法吗?我试图搜索相同的问题,但是对此没有好的解决方案。

我尝试过MVC模型以具有存储过程,类,API控制器,CreateController和Create View。由于某些原因,当我尝试使用Dropdownlist时,它出现了错误并指向视图系统...。

因此解决此问题的最简单方法是不使用API​​,

这意味着更改从中创建控制器

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create([Bind] MultipleActivityClass mta)
        {
            if (ModelState.IsValid)
            {
                HttpClient hc = new HttpClient();
                hc.BaseAddress = new Uri("http://localhost:53132/api/MultiAct");


                var c = hc.PostAsJsonAsync<MultipleActivityClass>("MultiAct", mta);
                c.Wait();
            }
            return View(mta);
        }

进入

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create([Bind] MultipleActivityClass mta)
        {
            if (ModelState.IsValid)
            {
                db.MultipleActivity(mta.LH);
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            return View(mta);
        }

我不知道为什么,如果有人可以解释,请这样做,谢谢。

model-view-controller html.dropdownlistfor selectlist asp.net-apicontroller argumentnullexception
1个回答
0
投票

因此解决此问题的最简单方法是不使用API​​,

© www.soinside.com 2019 - 2024. All rights reserved.