asp.net - route - href url action razor
Parámetros de acción Url.? (2)
La siguiente es la sobrecarga correcta (en su ejemplo, falta un cierre }
al objeto anónimo routeValues
para que su código routeValues
una excepción):
<a href="<%: Url.Action("GetByList", "Listing", new { name = "John", contact = "calgary, vancouver" }) %>">
<span>People</span>
</a>
Suponiendo que está utilizando las rutas predeterminadas, esto debería generar el siguiente marcado:
<a href="/Listing/GetByList?name=John&contact=calgary%2C%20vancouver">
<span>People</span>
</a>
que invocará exitosamente la acción del controlador GetByList
pasando los dos parámetros:
public ActionResult GetByList(string name, string contact)
{
...
}
Al listar el controlador que tengo,
public ActionResult GetByList(string name, string contact)
{
var NameCollection = Service.GetByName(name);
var ContactCollection = Service.GetByContact(contact);
return View(new ListViewModel(NameCollection ,ContactCollection));
}
En la página ASPX llamo,
<a href="<%:Url.Action("GetByList","Listing" , new {name= "John"} , new {contact="calgary, vancouver"})%>"><span>People</span></a>
Tengo un problema en el código ASPX ... Puedo extraer los registros del nombre John. pero cuando doy el contacto = "calgary, vancouver", la página web da error.
¿Cómo puedo llamar dos parámetros en Url.Action? Intenté el siguiente, pero eso también parece estar mal.
<a href="<%:Url.Action("GetByList","Listing" , new {name= "John" , contact= " calgary, vancouver" })%>"><span>People</span></a>
puede devolver una colección privada llamada HttpValueCollection, incluso la documentación dice que es una NameValueCollection utilizando la utilidad ParseQueryString. A continuación, agregue las claves manualmente, HttpValueCollection realiza la codificación por usted. Y luego solo agregue QueryString manualmente:
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>