Url.Action参数?

use*_*788 111 html asp.net url.action asp.net-mvc-2

在列出控制器我有,

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

在ASPX页面我打电话,

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

我在ASPX代码中遇到问题...我可以提取名称为john的记录.但当我给联系人="卡尔加里,温哥华"时,网页会出错.

如何在Url.Action中调用两个参数.我尝试了以下但这似乎也错了.

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

Dar*_*rov 195

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

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

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

<a href="/Listing/GetByList?name=John&amp;contact=calgary%2C%20vancouver">
    <span>People</span>
</a>
Run Code Online (Sandbox Code Playgroud)

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

public ActionResult GetByList(string name, string contact) 
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

  • @DarinDimitrov,我知道这是一个非常*老的帖子,但我看到你在线了.我不认为你知道如何动态传递参数(不像"John"那样硬编码)? (2认同)

Cés*_*eón 6

这适用于MVC 5:

<a href="@Url.Action("ActionName", "ControllerName", new { paramName1 = item.paramValue1, paramName2 = item.paramValue2 })" >
    Link text
</a>
Run Code Online (Sandbox Code Playgroud)