我可以通过Helper类构建ActionLink吗?怎么样?

时间:2009-10-22 13:34:42

标签: asp.net asp.net-mvc

我正在使用帮助器类来构建我的超链接。标记看起来像这样:

<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
  1. 有没有办法在我的帮助程序类中使用Html.ActionLink()
  2. 为什么这两种技术有区别?
  3. 这是我的控制器动作:

    public ActionResult AssignmentAdd(int id)
    {
       return View();
    }
    

1 个答案:

答案 0 :(得分:2)

看起来你有路由问题。我想你的控制器动作必须被修改为接受id参数的可空整数:

public ActionResult Action(int? id) 
{ }

此外,如果您遵循模板生成的默认路由表,则此操作的正确链接应为:

<a href="/controller/action/val"></a>

生成它的助手:

<%= Html.ActionLink("link text", "action", new { id = "val" }) %>