我会看看你是如何要求 JqGrid 进行 Web 服务调用的——因为默认情况下它对 MVC 的路由引擎一无所知——而这一切都发生在客户端。
如果我有一个页面,请离开 MVC 一分钟:
example.com/page1.aspx
并有一个相对链接到那里的另一个页面:
<a href="page2.aspx">Click here</a>
浏览器会寻找与page1.aspx同级的page2.aspx,即
example.com/page2.aspx
如果我将 page1 移动到新文件夹:
example.com/NewFolder/page1.aspx
浏览器会要求
example.com/NewFolder/page2.aspx
当用户点击链接时。
您的 GetGridData 调用也发生了同样的事情——这些是由 Web 浏览器根据可用的信息向您的服务器发出的。
因此,如果您的页面响应于:
example.com/Employee
并要求相关请求:
获取网格数据
浏览器会将该请求发送到 Employee 所在的同一级别:
example.com/GetGriddata
然后失败,因为路由引擎找不到该请求的路由。
您应该查看通过路由系统动态生成 GetGridData 调用的 URL,这将确保它构建为:
url: "/Employee/GetGridData"
最终编辑添加
忘了提一下,您可能应该为此使用UrlHelper Action 方法:
url: <%=Url.Action("GetGridData")%>
这将在当前控制器上生成 GetGridData 方法的路径。如果您需要访问不同的控制器或传递一些值,则可以使用重载来提供帮助。