我有一个与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,欢迎提出每一个提示。
答案 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
。