2009-01-28 12 views
6

Creo una cantidad de acciones en los controladores MVC.ASP.NET MVC Html.ActionLink URL de resultado: la forma de codificar

public ActionResult DoSmth1(string token) 
public ActionResult DoAnother2(string token) 

Y cuando tengo que llamar 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 se construye un URL? Soy ALR no tienen ideas ... ((


bien, una tiene algo de Waylight: - si los nombres de propiedad son los mismos que utiliza en el encaminamiento del esquema - por ejemplo, controlador, la acción y la identificación - el MVC siempre utilice el constructor de la ruta (/ c/a/Identificación)

Eso ayuda un poco. (modo - nombre del parámetro "id" como sea posible))

Pero el problema general sigue siendo válida ...


debe ser el mismo nombre que el token en la ruta

Exactamente - por primera vez tuve esa idea.

Pero ahora solo tengo la ruta predeterminada ({controller}/{action}/{id}) pero aún tengo la URL con "property" en slashes ... Esto es bastante extraño.

  • también hay un modo tramposo - para crear una ruta precisa que coincidan con un controlador dado con ella son los nombres de parámetros - se parece que va a ser la respuesta final - pero todavía no quieren hacer esto ((

Respuesta

4

no mostrar sus rutas, pero que está casi seguro de golpear diferentes rutas en este ejemplo. el argumento a su acción debe ser el mismo nombre que el token en la ruta para que la URL generada para que coincida con el token de ruta con la forma lambda de ActionLink. Todo lo que no concuerde 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 Si 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á.

Cuestiones relacionadas