Url.Action параметры? - PullRequest
       28

Url.Action параметры?

106 голосов
/ 08 июня 2011

В списке контроллеров у меня есть,

 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 ... Я могу получить записи для имени Джон. но когда я даю contact = "calgary, vancouver", веб-страница переходит на ошибку.

Как я могу вызвать два параметра в действии Url.Action. Я попробовал ниже, но это тоже кажется неправильным.

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

Ответы [ 3 ]

183 голосов
/ 08 июня 2011

Ниже приведена правильная перегрузка (в вашем примере вы пропускаете закрывающий } анонимный объект 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) 
{
    ...
}
4 голосов
/ 22 июня 2018

Это работает для MVC 5:

<a href="@Url.Action("ActionName", "ControllerName", new { paramName1 = item.paramValue1, paramName2 = item.paramValue2 })" >
    Link text
</a>
3 голосов
/ 28 марта 2013

вы можете вернуть частную коллекцию с именем HttpValueCollection, даже если в документации сказано, что это NameValueCollection с использованием утилиты ParseQueryString.Затем добавьте ключи вручную, 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>
...