Chr*_*Run 3 ajax asp.net-mvc asp.net-ajax episerver
我一直在冥思这个错误一段时间,并尝试了网上发现的所有建议,但仍然没有运气.
我正在对控制器的动作进行简单的ajax调用.该应用程序位于EPiServer中,但这似乎是关于在ASP.NET中使用Ajax的一般性问题.
索引视图:
<input id="btnAjax" type="button" value="Favorite" />
<script>
$('#btnAjax').click(function () {
$.ajax({
url: '@Url.Action("SetCookie", "Home")',
contentType: 'application/html; charset=utf-8',
type: 'POST',
dataType: 'html'
})
.success(function (result) {
alert("Success");
})
.error(function (xhr, status) {
alert(status);
})
});
</script>
Run Code Online (Sandbox Code Playgroud)
控制器 - HomeController:
[HttpPost]
public void SetCookie()
{
//Do stuff
}
Run Code Online (Sandbox Code Playgroud)
我做了什么/尝试过:
正确引用jquery.
为操作添加了[WebMethod]属性
在Web.config中添加了一个Http模块(ScriptModule,用于EPiServer)
在引用jquery之后添加了对jquery.unobtrusive-ajax.js的引用.
当我运行webapplication并按下按钮时,Developer工具中的调试器告诉我
这很奇怪,因为在HomeController中有一个名为SetCookie()的动作/方法.并显示警告框"失败",表示至少调用了js函数.
无论是我是盲人还是缺少某些东西,或者还有其他需要做的事情......
欢迎所有建议,非常感谢.
/ ChrisRun
小智 5
默认情况下,EPiServer不会为MVC注册默认路由.这是因为您的站点中可能有一个名为"Home"的页面与Home路由相冲突.您可以通过覆盖RegisterRoutes方法在Global.asax中自行注册路由:
protected override void RegisterRoutes(RouteCollection routes)
{
base.RegisterRoutes(routes);
// Register a route for Web API
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "webapi/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
// Register a route for classic MVC to use for API calls
routes.MapRoute(
name: "API",
url: "api/{controller}/{action}/{id}",
defaults: new { action = "Index", id = UrlParameter.Optional });
}
Run Code Online (Sandbox Code Playgroud)
我喜欢将MVC和Web API路由放在诸如"webapi"或"api"之类的前缀下,这样它就不太可能与任何内容路由冲突.
| 归档时间: |
|
| 查看次数: |
1607 次 |
| 最近记录: |