带有QueryString参数的@ Html.Action MVC 4

时间:2013-05-21 09:32:56

标签: c# asp.net-mvc asp.net-mvc-4 razor asp.net-mvc-routing

我有一个与MVC 4中的Html.Action相关的问题 我想将一些Querystring变量传递给Details视图

我现在的代码是

System.Text.StringBuilder MobileData = new System.Text.StringBuilder();

MobileData.AppendFormat("<a style=\"text-align:left;\" data-role=\"button\"     onclick=\"window.location='" + @Url.Action("Taken_Detail", new { id = tk.ID }) + "';\" data-  ajax=\"true\" data-icon=\"alert\"><span class=\"AgenItems\">{1:dd-MM-yyyy}</span>", tk.ID, tk.Datum);

问题是他会将我重定向到localhost / PROJECTNAME / Home / Taken_Detail / 2 我想要的是Home / Taken_Detail?id = 2 我在这里想念的是什么我刚刚开始学习MVC 4,欢迎提出每一个提示。

1 个答案:

答案 0 :(得分:5)

这是因为您的路由包含id参数。从路由中删除它,Url.Action将更改URL并将您的参数添加到查询字符串。

示例:

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

id参数将在最后一个斜杠之后放置,如果您使用Url.Action指定它。

如果删除它:

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

生成的网址将包含一个包含id

的查询字符串