.net - mvc - html actionlink w3schools
URL de resultado ASP.NET MVC Html.ActionLink: la forma de codificar (1)
No muestra sus rutas, pero es casi seguro que está golpeando diferentes rutas en este ejemplo. El argumento de su acción debe tener el mismo nombre que el token en la ruta para que el URL generado coincida con el token de ruta con la forma lambda de ActionLink. Cualquier cosa que no coincida con un token de enrutamiento se agregará como un parámetro de cadena de consulta, como con su segunda URL. Ver el parámetro de cadena de consulta es una fuerte evidencia de que el nombre que pasó implícitamente ("propiedad" en este caso) no coincide con un token de ruta. Como obtiene diferentes resultados con el mismo nombre de token, deduzco que está llegando a diferentes rutas. A propósito, recomiendo crear enlaces con RouteLink en lugar de ActionLink, para que pueda estar seguro de la ruta con la que coincidirá.
Creo una cantidad de acciones en los controladores MVC.
public ActionResult DoSmth1(string token)
public ActionResult DoAnother2(string token)
Y cuando tengo que llamar a ActionLink ...
=Html.ActionLink<SomeController>( x=> x.DoSmth(item.property), item.property)
=Html.ActionLink<AnotherController>( x=> x.DoAnother(item.property), item.property)
... me genera diferentes URL:
/Some/DoSmth/stringvalue
/Another/DoAnother?property=stringvalue
¿Dónde establecer la forma en que construye una URL? Tampoco tengo ideas ... ((
OK, a conseguido algo del waylight: - si los nombres de las propiedades son los mismos que se usan en el esquema de enrutamiento - por ejemplo, controlador, acción e identificación - el MVC siempre usará el constructor de rutas (/ c / a / id).
Eso ayuda un poco (así que - nombre el parámetro "id" como sea posible ))
Pero el problema general sigue siendo válido ...
debe nombrarse igual que el token en la ruta
Exactamente, primero tuve esa idea.
Pero ahora solo tengo la ruta predeterminada ({controller} / {action} / {id}) pero aún tengo la URL con "property" en barras ... Esto es bastante extraño.
- también hay una forma engañosa: para crear una ruta precisa que coincida con un controlador dado con sus nombres de parámetros, parece que será la respuesta definitiva, pero todavía no quiero hacer esto ((