问题
In listing controller I have,
public ActionResult GetByList(string name, string contact)
{
var NameCollection = Service.GetByName(name);
var ContactCollection = Service.GetByContact(contact);
return View(new ListViewModel(NameCollection ,ContactCollection));
}
In ASPX page I call,
<a href=\"<%:Url.Action(\"GetByList\",\"Listing\" , new {name= \"John\"} , new {contact=\"calgary, vancouver\"})%>\"><span>People</span></a>
I have a problem in the ASPX code... I can pull the records for the name john. but when I give the contact=\"calgary, vancouver\", the webpage goes to error.
How can I call two parameters in the Url.Action. I tried the below but that seems wrong too.
<a href=\"<%:Url.Action(\"GetByList\",\"Listing\" , new {name= \"John\" , contact= \" calgary, vancouver\" })%>\"><span>People</span></a>
回答1:
The following is the correct overload (in your example you are missing a closing }
to the routeValues
anonymous object so your code will throw an exception):
<a href="<%: Url.Action("GetByList", "Listing", new { name = "John", contact = "calgary, vancouver" }) %>">
<span>People</span>
</a>
Assuming you are using the default routes this should generate the following markup:
<a href="/Listing/GetByList?name=John&contact=calgary%2C%20vancouver">
<span>People</span>
</a>
which will successfully invoke the GetByList
controller action passing the two parameters:
public ActionResult GetByList(string name, string contact)
{
...
}
回答2:
This works for MVC 5:
<a href="@Url.Action("ActionName", "ControllerName", new { paramName1 = item.paramValue1, paramName2 = item.paramValue2 })" >
Link text
</a>
回答3:
you can returns a private collection named HttpValueCollection even the documentation says it's a NameValueCollection using the ParseQueryString utility. Then add the keys manually, HttpValueCollection do the encoding for you. And then just append the QueryString manually :
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>
来源:https://stackoverflow.com/questions/6278694/url-action-parameters