[英]ASP.NET Core Url.Action return empty string
浏览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);
},
与myurl:
var myurl = '@Url.Action("EventsRead","Kalender")';
但我发现警报(myurl)返回一个空字符串。 所以ajax调用必须失败。 我猜网址应该是这样的:
/Kalender/EventsRead
但如果我使用它,ajax返回404未找到。
我的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());
});
在我发疯之前,我真的需要一些帮助,感谢任何回应。 马丁
对解决方案感兴趣的每个人:
我改变了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路径。
现在我去睡觉哭了。
您的控制器设置看起来很好。 当您使用/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)
});
这可能对你有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.