Url-адрес.Параметры действия?
в списке контроллер у меня есть,
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... Я могу вытащить записи на имя Джон. но когда я даю контакт="Калгари", "Ванкувер", на сайте выходит ошибка.
как я могу вызвать два параметра в Url.Действие. Я попробовал ниже, но это тоже кажется неправильным.
<a href="<%:Url.Action("GetByList","Listing" , new {name= "John" , contact= " calgary, vancouver" })%>"><span>People</span></a>
3 ответа:
ниже приведена правильная перегрузка (в вашем примере вам не хватает закрытия
}
доrouteValues
анонимный объект, так что ваш код будет бросать исключение):<a href="<%: Url.Action("GetByList", "Listing", new { name = "John", contact = "calgary, vancouver" }) %>"> <span>People</span> </a>
предполагая, что вы используете маршруты по умолчанию это должно произвести следующую разметку:
<a href="/Listing/GetByList?name=John&contact=calgary%2C%20vancouver"> <span>People</span> </a>
который успешно вызвать
GetByList
действие контроллера, передающее два параметра:public ActionResult GetByList(string name, string contact) { ... }
вы можете вернуть частную коллекцию с именем HttpValueCollection даже в документации говорится, что это NameValueCollection с помощью утилиты ParseQueryString. Затем добавьте ключи вручную, HttpValueCollection сделать кодировку для вас. А затем просто добавьте строку запроса вручную:
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>