135

在列出控制器中,我有,

 public ActionResult GetByList(string name, string contact)
 {        
     var NameCollection = Service.GetByName(name);    
     var ContactCollection = Service.GetByContact(contact);           
     return View(new ListViewModel(NameCollection ,ContactCollection));
 }

在我调用的 ASPX 页面中,

 <a href="<%:Url.Action("GetByList","Listing" , new {name= "John"} , new {contact="calgary, vancouver"})%>"><span>People</span></a>

我的 ASPX 代码有问题...我可以提取名称 john 的记录。但是当我给出时contact="calgary, vancouver",网页会出错。

如何调用Url.Action. 我尝试了以下方法,但这似乎也是错误的。

  <a href="<%:Url.Action("GetByList","Listing" , new {name= "John" , contact= " calgary, vancouver" })%>"><span>People</span></a>
4

5 回答 5

234

以下是正确的重载(在您的示例中,您缺少}routeValues匿名对象的关闭,因此您的代码将引发异常):

<a href="<%: Url.Action("GetByList", "Listing", new { name = "John", contact = "calgary, vancouver" }) %>">
    <span>People</span>
</a>

假设您使用的是默认路由,这应该会生成以下标记:

<a href="/Listing/GetByList?name=John&amp;contact=calgary%2C%20vancouver">
    <span>People</span>
</a>

这将成功调用GetByList传递两个参数的控制器操作:

public ActionResult GetByList(string name, string contact) 
{
    ...
}
于 2011-06-08T12:32:40.853 回答
13

这适用于 MVC 5:

<a href="@Url.Action("ActionName", "ControllerName", new { paramName1 = item.paramValue1, paramName2 = item.paramValue2 })" >
    Link text
</a>
于 2018-06-22T17:00:16.430 回答
4

即使文档说它是使用 ParseQueryString 实用程序的 NameValueCollection,您也可以返回一个名为 HttpValueCollection 的私有集合。然后手动添加键,HttpValueCollection 为您进行编码。然后只需手动附加 QueryString :

var qs = HttpUtility.ParseQueryString(""); 
qs.Add("name", "John")
qs.Add("contact", "calgary");
qs.Add("contact", "vancouver")

<a href="<%: Url.Action("GetByList", "Listing")%>?<%:qs%>">
    <span>People</span>
</a>
于 2013-03-27T23:12:15.963 回答
1

这是另一种简单的方法

<a class="nav-link"
   href='@Url.Action("Print1", "DeviceCertificates", new { Area = "Diagnostics"})\@Model.ID'>Print</a>

哪里是@Model.ID参数

这里还有第二个例子。

<a class="nav-link"
   href='@Url.Action("Print1", "DeviceCertificates", new { Area = "Diagnostics"})\@Model.ID?param2=ViewBag.P2&param3=ViewBag.P3'>Print</a>
于 2020-03-17T02:22:42.587 回答
0

您还可以在 ASP.Net MVC 上执行以下操作

<a href="@Url.Action("GetByList", "Listing",new {area = "Admin"})'
+ @Model.Id + '?name ="John"&contact ="calgary, vancouver"'+'"'>
    <span>People</span>
</a>
于 2021-09-25T05:32:06.393 回答