ACTUALIZACIÓN 2UrlHelper.Action no se asigna a la zona que el controlador está en correctamente
Ok - Así que parece que mi pregunta está cambiando ligeramente de nuevo :-)
me he dado cuenta ahora que UrlHelper.Action no parece resolver correctamente la URL en ningún Área a menos que el nombre del área esté explícitamente especificado. Si no se especifica, parece devolver cualquier nombre de área en el que nos encontremos actualmente, lo que hace que parezca que funciona desde una parte del sitio, pero luego el mismo enlace en otra área se resuelve con el nombre de Área incorrecto.
O he hecho algo funky para que haga esto o no entiendo muy bien cómo funciona este método de Acción.
ACTUALIZA 1
puedo hacer este trabajo de la siguiente manera:
return helper.Action("add", "product",new {area = "storemanagement"});
que cambia mi pregunta ligeramente.
¿Cómo es que el enrutamiento MVC no elimina la ambigüedad de los controladores con el mismo nombre y resuelve el que tiene el método de acción especificado?
original era publicar
Hola a todos,
He creado un método de ayuda en la clase UrlHelper y estoy teniendo un pequeño problema con una de las rutas.
Aquí está el código para el método de ayuda en cuestión:
public static string AddProduct(this UrlHelper helper)
{
return helper.Action("add", "product");
}
Tengo básicamente dos controladores llamados "producto" que están en diferentes áreas del sitio. Uno de ellos se utiliza para explorar productos y el otro para la gestión de productos. Solo uno de los controladores del producto contiene un método de acción "Agregar".
Cuando la salida que el valor de addProduct
<%: Url.AddProduct() %>
El nombre del área que se resuelva al área actual que estoy navegando y no el área correcta para el controlador de producto que contiene el método Add acción.
¿Hay algo que necesite configurar en las rutas? No estoy exactamente seguro de cómo funciona la ruta con UrlHelper.Action, así que no sé si es posible hacer lo que estoy intentando.
¡Saludos por cualquier ayuda.
intente agregar el controlador y el área nombre como argumentos adicionales usando este método sig 'UrlHelper.Action Method (String, String, Object)' – Ahmad
Gracias Ahmad. Eso realmente funciona, así que lo agregaré como una actualización de mi pregunta. Todavía estoy interesado en por qué el sistema de enrutamiento no elimina la ambigüedad de los dos controladores y, en su lugar, simplemente parece darse por vencido y asumir el uso del área actual. –
para responder a su pregunta, es necesario profundizar en los aspectos internos del marco MVC para descubrir por qué sucede esto. En cualquier caso, por lo que he visto, solo los valores de ruta 'controlador' y' acción' tienen un tratamiento especial, es decir, el área se infiere/asume en función de desde dónde se llama al ayudante. Por lo tanto, la necesidad de especificar el parámetro de área. – Ahmad