簡體   English   中英

ASP.NET MVC 5 Web API不接受來自MVC ASP.NET Core解決方案的POST上的視圖模型

[英]ASP.NET MVC 5 Web API not accepting View Model on POST from MVC ASP.NET Core solution

我有兩種解決方案,一種是MVC5 Web應用程序,另一種是充當基本Web窗體的MVC core 2.2 Web應用程序。

我正在嘗試將Webform數據(使用ViewModel)發布到MVC5 Web應用程序API。

編碼

MVC5 Web應用程序/ API上的POST方法

// POST
[HttpPost]
public IHttpActionResult Post([FromBody] WebFormDataVM personData)
{
    // logic here
}

MVC核心網絡表單(發布到上面)

[HttpPost]
public async Task<ActionResult> Create(PersonVM personData)
{
    var path = "api/WebForm/Post";
    var url = new Uri("http://localhost:60291/");
    var client = new HttpClient();
    client.BaseAddress = url;

    var response = await client.PostAsJsonAsync(path, personData);

    return RedirectToAction("Index");
}

問題

發布viewmodelPOST方法API參數(WebformDataVM personData)始終為null

我嘗試了完全相同的設置,但是使用了MVC5項目/解決方案而不是核心,並且可以正常運行。

我嘗試過的

發布一個字符串而不是視圖模型對象
從.net核心項目中刪除HTTPS(通過項目選項)

任何幫助將不勝感激。

請嘗試使用此解決方案

[HttpPost]
public async Task<ActionResult> Create(PersonVM personData)
{
 using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri("http://localhost:60291/api/WebForm/Post");

                var response = await client.PostAsJsonAsync("personData", personData);
                return RedirectToAction("Index");

            }

}



   [HttpPost]
    public IHttpActionResult  Post(WebFormDataVM personData)
        {
           // code
        }

您應該將對象序列化為json

        using (HttpClient client = new HttpClient())
        {
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            var url ="yourUrl" // http://localhost:60291/api/WebForm/Post
            var model=yourObject; //PersonVM  
            HttpResponseMessage response = await client.PostAsync(url, new StringContent(JsonConvert.SerializeObject(yourObject),Encoding.UTF8, "application/json"));

        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM