。NETCore 2.1中具有Razor类库的AJAX POST给出404或415

问题描述 投票:0回答:1

我有一个.NETCore 2.1 Web应用程序和一个单独的Razor类库。

RCL包含一些我打算在单独的项目中使用的共同的局部视图和功能。

我正在尝试向如下所示的控制器发布AJAX帖子:

using Microsoft.AspNetCore.Mvc;

namespace ThinkkaGlobal
{
    [ApiController]
    public class LoginController : Controller
    {
        [HttpPost("thinkka/login")]
        public ActionResult DoLogin([FromBody] ThinkkaUsers.Requests.LoginRequest Req)
        {
            return PartialView("Login", Req);
        }
    }
}

注意属性路由...这不一定是我想要的,但是我已经花了[[hours来尝试使它起作用,因为我尝试了许多不同的路由选项。我的app.UseMvcWithDefaultRoute();文件中也有Startup.cs

最终,我想要的是一个AJAX帖子,它将返回部分视图...,我想使用jquery-unobtrusive-ajax来做到这一点,这就是我的开始方式,但是后来我开始直接使用jQuery AJAX因此我可以再多加一点。

所以,非常基本的AJAX ...

$.ajax({ url: "thinkka/login", type: 'post', contentType: "application/json", // (application/x-www-form-urlencoded; charset=UTF-8) dataType: 'json', success: function (data) { console.log(data); }, data: { email: "[email protected]" } });

仅作简单说明,POSTed对象是一个简单的对象,如下所示:

class LoginRequest { public string email { get; set; } public string password { get; set; } public bool remember { get; set; } public int location { get; set; } public string userpass { get; set; } }

当我使用contentType application/x-www-form-urlencoded; charset=UTF-8发布时,我得到了Error 415 - Unsupported Media Type

[当我使用contentType application.json发布时,我得到了Error 404 - Not Found

[几个小时我刚收到404,但是我认为那时我确实使用了错误的路由。我使用thinkka/login/DoLogin作为URL,即包括所调用的方法名,但是路由属性将其覆盖,因此在所有时间里,我都在浪费时间尝试使之起作用,我认为我使用的是错误的URL!] >

但是...现在...我至少可以得到不同的错误代码的事实表明URL正确吗?

但是我不知道为什么我仍然会得到使用application/json的404,尽管实际上application/x-www-form-urlencoded; charset=UTF-8是正确的contentType...。不是吗。]]

我不知道。。。已经很晚了,我已经这样做了好几个小时了,这不再有意义了!

一如既往,任何帮助将不胜感激!

我有一个.NETCore 2.1 Web应用程序和一个单独的Razor类库。 RCL包含一些我打算在单独的项目中使用的共同的局部视图和功能。我正在尝试制作一个...

ajax asp.net-core asp.net-core-2.1 asp.net-apicontroller asp.net-mvc-controller
1个回答
0
投票
嗯...我分两个阶段解决了问题...

首先要正确返回我最终想要的Partial,我如下更改了Controller类

© www.soinside.com 2019 - 2024. All rights reserved.