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... Я могу получить записи для имени Джона. но когда я даю contact="calgary, vancouver", веб-страница переходит к ошибке.
Как я могу вызвать два параметра в Url.Action. Я попробовал ниже, но это тоже кажется неправильным.
<a href="<%:Url.Action("GetByList","Listing" , new {name= "John" , contact= " calgary, vancouver" })%>"><span>People</span></a>
5 ответов
Ниже приведена правильная перегрузка (в вашем примере вы пропускаете закрытие }
к 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)
{
...
}
Это работает для MVC 5:
<a href="@Url.Action("ActionName", "ControllerName", new { paramName = item.paramValue })" >
Link text
</a>
Вы можете вернуть частную коллекцию с именем 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>
Вот еще один простой способ сделать это
<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¶m3=ViewBag.P3'>Print</a>
Вы также можете сделать следующее в ASP.Net MVC
<a href="@Url.Action("GetByList", "Listing",new {area = "Admin"})'
+ @Model.Id + '?name ="John"&contact ="calgary, vancouver"'+'"'>
<span>People</span>
</a>