我有以下行动链接:
<%= Html.ActionLink("Check this", "Edit", "test",
new { id = id }, new { style = "display:block" })%>
如何将data=name
作为查询字符串包含在内。有点像这样:
link?data=name
答案 0 :(得分:101)
Html.ActionLink
的第4个参数可以包含任意数量的属性:
<%= Html.ActionLink("Check this", "Edit", "test",
new { id = id, data=name }, new { style = "display:block" })%>
这些属性根据路由插入到URL中,但如果属性名称无法与任何路由匹配,则会将其添加为URL GET参数。
因此,如果您有标准路线{controller}/{action}/{id}
,您将获得以下网址:
test/Edit/[id]?data=[name]
来自上面的代码。
答案 1 :(得分:2)
通过这种方式传递查询字符串
@Html.ActionLink("Delete Record", "Home", "Delete", new { id=Id},null)
通过上面的代码,你会得到像(假设Id = 1)的网址:/Home/Delete/1
如果你想在查询字符串中添加更多参数,那么:
@Html.ActionLink("Delete Record", "Home", "Delete", new { id=Id, Name=name},null)
通过上面的代码,你会得到像(假设Id = 1和Name = India)的网址:
/Home/Delete/1?Name=India
答案 2 :(得分:2)
我知道这是一个古老的问题但是。
如果以下代码未生成<a href="/?param=value" />
。
<%= Html.ActionLink("Text", "Action", "Controller", new { param=value }, null)%>
我会建议您检查一下您的操作是否至少有一个[Route]
属性(例如我使用了[Route("/")]
)。
希望它有所帮助。
答案 3 :(得分:1)
我厌倦了用html.actionlink撞墙。当你只想将它与简单的路由调用路由时,效果很好,但是当你想在最后添加一个简单的查询字符串时绝对拒绝合作。
我当时没有ID,我希望能够用“?”添加某种实际的Querystring。
所以我需要一个Querystring,我切换到使用锚标记内的url.action。
<a href='@url.action("Action","route")?Parameter=Value' >Text for Link Name</a>
至少它是有效的,我可以停止对本应该是一项非常简单的任务的事情感到头痛。有人需要从脑袋中脱颖而出,让ActionLink在MVC路由中适用于Querystrings。