Diferencia de enrutamiento Asp.Net MVC en www.Mysite.com/Employee y www.Mysite.com/Employee/ mientras usa JqGrid

StackOverflow https://stackoverflow.com/questions/1417200

Pregunta

Estoy usando ASP.NEt MVC para uno de mis proyectos. En esto tengo un controlador de empleado que se puede llamar por www.Mysite.com/Employee/ url.

También he usado JqGrid que usa followng para obtener datos

  

url: " GetGridData "

Mientras probaba lo mismo encontré que

  1. Si escribo www.Mysite.com/Employee/ en el navegador, se realiza una llamada a

      

    www.Mysite.com/Employee/GetGridData

  2. Si escribo www.Mysite.com/Employee en el navegador, se realiza una llamada a

      

    www.Mysite.com/GetGridData

Nota: la falta / al final en la segunda llamada.

Cómo corregir esto, ya que es probable que el usuario final pueda escribir cualquiera de estas URL en el navegador.

¿Fue útil?

Solución

Echaría un vistazo a cómo le está pidiendo a JqGrid que haga su llamada al servicio web, porque no sabrá nada sobre el motor de enrutamiento de MVC de manera predeterminada, y todo esto está sucediendo en el lado del cliente.

Salir de MVC por un minuto, si tengo una página:

  

ejemplo.com/página1.aspx

Y tiene un enlace relativo a otra página allí:

<a href="page2.aspx">Click here</a>

El navegador buscará page2.aspx en el mismo nivel que page1.aspx, es decir,

  

ejemplo.com/página2.aspx

Si muevo la página1 a una nueva carpeta:

  

example.com/NewFolder/page1.aspx

El navegador pedirá

  

example.com/NewFolder/page2.aspx

cuando un usuario hace clic en el enlace.

Lo mismo le sucede a su llamada GetGridData: el navegador web los realiza a su servidor en función de la información que tiene disponible.

Entonces, si su página responde:

  

ejemplo.com/empleado

Y solicita una solicitud relativa para:

  

GetGridData

El navegador enviará esa solicitud al mismo nivel en el que parece estar el empleado:

  

ejemplo.com/GetGriddata

Que luego falla porque el motor de enrutamiento no puede encontrar una ruta para esa solicitud.

Debería considerar generar la URL para la llamada GetGridData dinámicamente a través del sistema de enrutamiento, lo que garantizará que se construya como:

url: "/Employee/GetGridData"

Edición final para agregar

Olvidé mencionar que probablemente debería usar el Métodos de acción UrlHelper para esto:

url: <%=Url.Action("GetGridData")%>

Esto generará una ruta al método GetGridData en el controlador actual. Si necesita acceder a un controlador diferente o pasar algunos valores, hay sobrecargas para ayudarlo.

Otros consejos

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top