asp.net mvc 4.6 下拉列表给出 "System.ArgumentNullException: 'Value cannot be null. Parameter name: items' " 错误
asp.net mvc 4.6 dropdownlist give "System.ArgumentNullException: 'Value cannot be null. Parameter name: items' " Error
我试过 MVC 模型有一个 存储过程, Class, API 控制器、CreateController 和创建视图。
出于某种原因,当我尝试使用下拉列表时,它出现错误并指向 View
System.ArgumentNullException: '值不能为空。
参数名称:items'
<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>
以上是我的View
中的代码
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);
}
这是我的 控制器 用于创建
public IHttpActionResult MultiActCreate(MultipleActivityClass mt)
{
ELSEntities db = new ELSEntities();
//The store procedure name: MultipleActivity
db.MultipleActivity(mt.LH);
db.SaveChanges();
return Ok();
}
而这里是我在Controller中使用的API控制器,它使用classMultipleActivityClass来插入根据一个存储过程
public class MultipleActivityClass
{
public string LH { get; set; }
}
那么有办法解决这个问题吗?我试图搜索同样的问题,但没有好的解决方案。
因此,解决此问题的最简单方法是不使用 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);
}
不知道为什么,如果有人能解释一下,谢谢。
我试过 MVC 模型有一个 存储过程, Class, API 控制器、CreateController 和创建视图。
出于某种原因,当我尝试使用下拉列表时,它出现错误并指向 View
System.ArgumentNullException: '值不能为空。
参数名称:items'
<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>
以上是我的View
中的代码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);
}
这是我的 控制器 用于创建
public IHttpActionResult MultiActCreate(MultipleActivityClass mt)
{
ELSEntities db = new ELSEntities();
//The store procedure name: MultipleActivity
db.MultipleActivity(mt.LH);
db.SaveChanges();
return Ok();
}
而这里是我在Controller中使用的API控制器,它使用classMultipleActivityClass来插入根据一个存储过程
public class MultipleActivityClass
{
public string LH { get; set; }
}
那么有办法解决这个问题吗?我试图搜索同样的问题,但没有好的解决方案。
因此,解决此问题的最简单方法是不使用 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);
}
不知道为什么,如果有人能解释一下,谢谢。