网址操作参数?


115

在列表控制器中,

 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>

Answers:


207

以下是正确的重载(在您的示例中,您缺少}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) 
{
    ...
}

@ user787788,您遇到什么问题?您不接受两个参数是什么意思?谁不接受?您收到错误消息了吗?您的控制器动作没有被击中吗?您得到的值有误吗?请明确点。
Darin Dimitrov

当我给出两个参数时,aspx页面甚至没有命中控制器。在页面本身中发现错误。我有一个defalut例外,叫做“东西没了”。aspx去那里
user787788 2011年

@ user787788,这是什么错误?您收到的确切消息是?
Darin Dimitrov

错误是,您可能输入了错误的地址(URL)。
user787788 2011年

2
@DarinDimitrov,我知道这是一个老的帖子,但是我看到你在线。我不认为您会动态地传递参数(不是像“ John”那样硬编码)?

8

这适用于MVC 5:

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

4

您可以使用ParseQueryString实用程序返回一个名为HttpValueCollection的私有集合,即使文档说它是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>

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>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.