mvc操作链接错误消息

时间:2010-04-16 09:06:50

标签: asp.net-mvc

这句话有什么问题?

   

我遇到以下错误:

  

错误10'System.Web.Mvc.HtmlHelper'不包含'ActionLink'的定义和最佳扩展方法重载'System.Web.Mvc.Html.LinkExtensions.ActionLink(System.Web.Mvc.HtmlHelper, string,string)'有一些无效的参数c:\ Code \ MvcUI \ Views \ Project \ Index.aspx 17 22 MvcUI

     

错误11参数'3':无法从'AnonymousType#1'转换为'string'c:\ Code \ MvcUI \ Views \ Project \ Index.aspx 17 54 MvcUI

2 个答案:

答案 0 :(得分:2)

编译器说明了一切。有no such extension method。您需要将操作名称作为第二个参数传递:

<%= Html.ActionLink(
    "Assign Users", 
    "Index",
    new 
    { 
        Controller = "Users", 
        Action = "Index", 
        Query = "Index", 
        Page = 2932 
    }
) %>

为避免重复操作名称,您可以使用this extension

<%= Html.ActionLink(
    "Assign Users", 
    "Index",
    "Users",
    new 
    { 
        Query = "Index", 
        Page = 2932 
    },
    null
) %>

更新:

如果您设置了默认路线:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        "Default",
        "{controller}/{action}/{id}",
        new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
}

这将生成类型为http://localhost:2199/Users/Index/2932?Query=Index

的链接
<%= Html.ActionLink(
    "Assign Users", 
    "Index",
    "Users",
    new 
    { 
        Query = "Index", 
        Id = 2932 
    },
    null
) %>

答案 1 :(得分:0)

来自您之前的评论

  

我得到以下内容:localhost:2593 / Users?Query = Index&amp; Page = 2932我想拥有:Users \ Index \ id = 2932

这就是你需要的:

<%= Html.ActionLink("Assign Users",
                    "Index",
                    "Users", 
                     new { id = 2932 }, 
                     null) %>

您的索引方法可能如下所示:

public ActionResult Index()
{ 
   //..... 
}

这意味着您的网址可能如下所示:

localhost:2593/Users/Index?id=2932

您还可以在动作方法中将id设为参数。因此,您的Index方法定义在控制器中可能如下所示:

public ActionResult Index(int id)
{ 
 //..... 
}

,你的网址看起来像这样

localhost:2593/Users/Index/2932