Razor actionlink autogenerating? Length = 7 en URL?

Tengo Link en la página de afeitado a continuación.

@Html.ActionLink("Create New Profile", "Create", "Profile", new { @class="toplink" }) 

Veo la fuente de vista de página que está debajo

 Create New Profile 

Cuando hago clic en el enlace. La URL es como a continuación.

 http://localhost:54876https://stackoverflow.com/admin/profile/create?length=7 

No quiero … longitud = 7. Por qué esto se genera automáticamente

La anulación de ActionLink está utilizando coincidencias con (cadena de texto de enlace, nombre de acción de cadena, valores de ruta de objeto, atributo htmlAttributes) anular. Entonces su valor de “Perfil” se pasa al parámetro routeValues . El comportamiento de esta función con respecto a este parámetro es tomar todas las propiedades públicas en él y agregarlo a la lista de valores de ruta utilizados para generar el enlace. Como una Cadena solo tiene una propiedad pública (Longitud), usted termina con “longitud = 7”.

La sobrecarga correcta que desea utilizar es (cadena linkText, string actionName, string controllerName, Object routeValues, Object htmlAttributes) y la llamará loke así:

 @Html.ActionLink("Create New Profile", "Create", "Profile", new {}, new { @class="toplink"}) 

No estoy seguro de la causa exacta de esto, pero cámbialo a:

 @Html.ActionLink("Create New Profile", "Create", "Profile", new {}, new { @class="toplink" }) 

No sé qué sobrecarga MVC está recogiendo cuando dejas fuera el último parámetro ( htmlattributes es el agregado), pero eso lo arreglará. Uno de estos días voy a investigar y averiguar exactamente qué está pasando.

Otra cosa a tener en cuenta, ya que está definiendo el controlador en @ActionLink , que puede que no tenga que hacer, por ejemplo, la vista en la que se expresa su “Crear nuevo perfil” @ActionLink podría ser “/ admin / profile / index .cshtml “, una vista que enumera los perfiles existentes, en este caso, no necesita definir el controlador en @ActionLink ya que @ActionLink ya está relacionado con @ActionLink , por lo que su @ActionLink podría ser

 @Html.ActionLink("Create New Profile", "Create", null, new { @class="toplink" }) 

Usé null lugar de new{} como lo hace la respuesta marcada, creo que esto es más apropiado para mí mismo. Las sobrecargas de ActionLink no son lo más sencillo que haya existido.