如何在MVC中的ActionLink中传递查询字符串参数

时间:2010-06-23 10:48:00

标签: asp.net-mvc

我有以下行动链接:

<%= Html.ActionLink("Check this", "Edit", "test", 
                     new { id = id }, new { style = "display:block" })%>

如何将data=name作为查询字符串包含在内。有点像这样:

link?data=name

4 个答案:

答案 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。