Digamos que tengo una clase
public class ItemController:Controller
{
public ActionResult Login(int id)
{
return View("Hi", id);
}
}
En una página que no se encuentra en la carpeta Elemento, donde ItemController
reside, quiero crear un enlace al Login
método. Entonces, ¿qué Html.ActionLink
método debo usar y qué parámetros debo pasar?
Específicamente, estoy buscando el reemplazo del método
Html.ActionLink(article.Title,
new { controller = "Articles", action = "Details",
id = article.ArticleID })
que se retiró en la reciente encarnación ASP.NET MVC.
c#
.net
asp.net-mvc
html-helper
actionlink
Graviton
fuente
fuente
Respuestas:
Creo que lo que quieres es esto:
ASP.NET MVC1
Utiliza el siguiente método de firma de ActionLink:
ASP.NET MVC2
se han cambiado dos argumentos
Utiliza el siguiente método de firma de ActionLink:
ASP.NET MVC3 +
los argumentos están en el mismo orden que MVC2, sin embargo, el valor de id ya no es necesario:
Esto evita la codificación rígida de cualquier lógica de enrutamiento en el enlace.
Esto le dará la siguiente salida html, suponiendo:
article.Title = "Title"
article.ArticleID = 5
. .
fuente
, null
parámetro DESPUÉS de sunew { ... }
... porque si verifica las sobrecargas de ese método, está pensando que sus parámetros son html ... no enrutar argumentos. Para usar el método correcto , debe usar el método que tienerouteArguments, htmlArguments
... así que simplemente pase nulo para eso últimohtmlArgument
. El primer fragmento de código en esta respuesta lo tiene. He actualizado esta publicación para que pueda verla fácilmente (es decir, no se desplaza).@Html.ActionLink("Text","Action","Controller", new { item.ID }, null)
Quería agregar a la respuesta de Joseph Kingry . Él proporcionó la solución, pero al principio tampoco pude lograr que funcionara y obtuve un resultado como Adhip Gupta. Y luego me di cuenta de que la ruta tiene que existir en primer lugar y que los parámetros deben coincidir exactamente con la ruta. Entonces tenía una identificación y luego un parámetro de texto para mi ruta que también necesitaba ser incluido.
fuente
Es posible que desee ver el
RouteLink()
método, que le permite especificar todo (excepto el texto del enlace y el nombre de la ruta) a través de un diccionario.fuente
Creo que Joseph volteó el controlador y la acción. Primero viene la acción, luego el controlador. Esto es algo extraño, pero la apariencia de la firma.
Solo para aclarar las cosas, esta es la versión que funciona (adaptación del ejemplo de Joseph):
fuente
que hay de esto
fuente
fuente
Si quieres usar todos los pantalones elegantes, así es como puedes extenderlo para poder hacer esto:
Deberá poner esto en el
System.Web.Mvc
espacio de nombres:Esto incluye dos anulaciones para
Route Values
yHTML Attributes
, además, todas sus vistas tendrían que agregar:@using YourProject.Controllers
o puede agregarlo a suweb.config <pages><namespaces>
fuente
Utilice parámetros con nombre para facilitar la lectura y evitar confusiones.
fuente
Con MVC5 lo he hecho así y es 100% código de trabajo ...
Ustedes pueden tener una idea de esto ...
fuente
Este tipo de uso:
@ Html.ActionLink ("Página principal", "Índice", "Inicio")
Página principal: Nombre del texto Índice: Vista de acción Inicio: HomeController
Uso base ActionLink
fuente