我正在使用帮助器类来构建我的超链接。标记看起来像这样:
<a href='/controller/action?id=val'></a>
这与Html.ActionLink()
生成的标记相同。但是,如果我使用Html.ActionLink()
,则id被接受为控制器内部方法中的参数。如果我只是在上面的字符串中生成a
标记,当我尝试使用id参数定义方法时,我会得到以下错误:
The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult' ... To make a parameter optional its type should be either a reference type or a Nullable type. Parameter name: parameters
Html.ActionLink()
?这是我的控制器动作:
public ActionResult AssignmentAdd(int id)
{
return View();
}
答案 0 :(得分:2)
看起来你有路由问题。我想你的控制器动作必须被修改为接受id参数的可空整数:
public ActionResult Action(int? id)
{ }
此外,如果您遵循模板生成的默认路由表,则此操作的正确链接应为:
<a href="/controller/action/val"></a>
生成它的助手:
<%= Html.ActionLink("link text", "action", new { id = "val" }) %>