Url.Action参数?

时间:2011-06-08 12:29:29

标签: asp.net html asp.net-mvc-2 url.action

在列表控制器中,我有,

 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的记录。但当我给联系人=“卡尔加里,温哥华”时,网页就会出错。

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

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

4 个答案:

答案 0 :(得分:177)

以下是正确的重载(在您的示例中,您错过了对}匿名对象的结束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) 
{
    ...
}

答案 1 :(得分:4)

这适用于MVC 5:

A.1 Goals

Section 1: Blah Blah Blah

Section 2: Blah Blah Blah

A.2 description

答案 2 :(得分:3)

你可以返回一个名为HttpValueCollection的私有集合,即使文档说它是使用ParseQueryString实用程序的NameValueCollection。 然后手动添加密钥,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>

答案 3 :(得分:0)

这是另一种简单的方法

<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>