【发布时间】:2016-12-19 19:09:30
【问题描述】:
我正在尝试将下拉列表的选定值从编辑视图获取到控制器。我不断收到相同的错误“{”Value cannot be null.\r\nParameter name: items“}”
这是我的看法:
<div class="form-group">
@Html.LabelFor(model => model.adminID, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model => model.adminID, new SelectList(ViewBag.Admins, "Value", "Text"), htmlAttributes: new { @class = "form-control", @name = "admin" })
@Html.ValidationMessageFor(model => model.adminID, "", new { @class = "text-danger" })
</div>
</div>
我在 get 操作中创建了 SelectList。
var admins = from a in db.members
select new { name = a.student.Fname + " " + a.student.Sname, id = a.StudentID };
ViewBag.Admins = admins.Select(a => new SelectListItem
{
Text = a.name,
Value = a.id
}).ToList();
这里是控制器。我使用了adminID,属性的名称来尝试绑定它,但是当我发布页面时它返回错误。
public async Task<ActionResult> Edit([Bind(Include = "ClubId,ClubName,CreationDate,adminID")] Club club)
{
if (ModelState.IsValid)
{
db.Entry(club).State = EntityState.Modified;
await db.SaveChangesAsync();
return RedirectToAction("Index");
}
return View(club);
}
返回的错误是
"{"值不能为空。\r\n参数名称:items"}"
路由配置
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Clubs", action = "Index", id = UrlParameter.Optional }
);
}
}
【问题讨论】:
-
你的路线是什么样的?
-
@JesseMoreland,不太清楚你的意思。
-
显示异常行以及控制器动作定义plz
-
@Steve 控制器操作在最初的问题中(代码的第三个 sn-p)。屏幕截图中附有异常行,位于屏幕截图的顶部。
-
@RyanSpain 在 MVC 中,你有一个路由配置。我的猜测是那里的某个地方,你有一个路线问题。该路由需要一个名为 items 的参数。
标签: c# asp.net-mvc asp.net-mvc-4