【发布时间】:2017-07-05 16:03:59
【问题描述】:
我已经在我的 .NET MVC 5 应用程序中注册了一个路由,如下所示:
routes.MapRoute(
"Books", // Route name
"Books/{id}", // URL with parameters*
new { controller = "Books", action = "Index", id =
UrlParameter.Optional }
);
现在可以通过以下方式访问 Web 控制器和操作索引:
mylocalhost:8080/Books/50ShadesOfGrey
现在的问题是我有另一种方法,我用这个参数发布数据,如下所示:
@if (Url.RequestContext.RouteData.Values["id"] != null)
{
@:DoScan('@Url.RequestContext.RouteData.Values["id"]');
}
DoScan 是一个 javascript 方法,它接受书名作为参数,然后应该将书名发布到我在同一个控制器(书籍)中拥有的这个方法,它的定义如下:
[HttpPost]
public ActionResult LoadData(string bookName)
{
// method sould now be called but nothing happens??
}
我在没有最近添加的路由的情况下对其进行了测试,并且帖子工作正常...但是当我添加此路由时,就像这个 LoadData HttpPost 方法被完全忽略了?我觉得我应该为此在路由配置中添加另一条路由,但我不确定在这里做什么?有人可以帮帮我吗?
附言
post方法中定义的路由是这样的:
/Books/LoadData/
但是操作永远不会被触发?
附:该方法通过 datatables ajax 调用被调用,如下所示:
"ajax": {
"url": "/Books/LoadData/",
"type": "POST",
"data": {
"bookName": _bookName /*Parameter I passed through calling the function*/
},
【问题讨论】:
-
你能把在js中做post的代码贴出来吗,DoScan就是这样?
-
@Andrei 我已经包含了代码和解释
-
@Andrei 我应该提一下,如果没有这条新添加的路由,一切都会正常工作...添加路由时,该方法永远不会被调用...我添加的路由有问题或我需要为此方法添加另一条路线.. ?
-
您的第一个 URL 示例是这样的:
mylocalhost:8080/Books/50ShadesOfGrey因此,如果您想要一个包含LoadData的不同 URL 作为您的 post 方法,您将需要注册另一个 URL。您的第一个方法看起来像 GET,因此您可以对两者使用相同的 URL,并查看使用[FromBody]标记而不通过 URL 传递数据。刚刚注意到您的程序被称为 LoadData ... @Andrei 的答案很好。
标签: javascript c# asp.net asp.net-mvc routes