繁体   English   中英

ASP.NET Core Url.Action返回空字符串

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM