在stackoverflow上浏览3个小时后,我找不到问题的解决方案。 所以我怀疑我的项目中的某些内容很特别。
我在Visual Studio 2017上有一个ASP.NET Core(2.0)WebApplications项目。我尝试从我的Kalender.cshtml文件中调用ajax:
return $.ajax({
type: 'GET',
url: myurl,
data: '{}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) { //REQUEST SUCCESS
alert(result);
},
with myurl:
var myurl = '@Url.Action("EventsRead","Kalender")';
但我认识到警告(myurl)会返回一个空字符串。所以ajax调用必须失败。我想网址应该是这样的:
/Kalender/EventsRead
但如果我使用它,则ajax返回404 Not found。
我的Kalender.cshtml.cs动作如下:
[HttpGet]
public IActionResult EventsRead()
{
//DATABASE READOUT
var events = DataBase.Events.ToList();
return new JsonResult(events);
}
PageModel的类看起来像:
public class KalenderModel : PageModel
以下是自动生成的所有内容。我尝试了大约100个不同的版本但从未在EventsRead()
动作中得到断点。
侧面信息:
在我的Startup.cs中,我压制了AntiforgeryToken:
services.AddMvc().AddRazorPagesOptions(options =>
{
options.Conventions.ConfigureFilter(new IgnoreAntiforgeryTokenAttribute());
});
在我疯了之前我真的需要一些帮助,感谢任何回应。 马丁
答案 0 :(得分:2)
对解决方案感兴趣的每个人:
我在Startup.cs中更改了:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
//ROUTES DEFAULT SETTINGS
app.UseMvc();
}
为:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
//ROUTES CUSTOM SETTINGS
app.UseMvcWithDefaultRoute();
}
之后
'@Url.Action("TestGet","Kalender")'
将返回correkt路径。
现在我去睡觉了,哭了。
答案 1 :(得分:1)
您的控制器设置看起来很好。当您使用/Kalender/EventsRead
作为网址并因您的数据字段而获得响应404时。你把花括号作为字符串。在你的ajax电话中试试这个
return $.ajax({
type: 'GET',
url: '/Kalender/EventsRead',
data:{},
success: function (result) { //REQUEST SUCCESS
console.log(result);
},
error: function (response){
console.log(response)
});
这可能会对你有帮助。