使用ASP.NET MVC Core Web API和Entity Framework Core中的TryUpdateModel更新模型不起作用

asp.net-core-mvc asp.net-core-webapi entity-framework-core

我是ASP.NET MVC Core Web API和EF Core的新手,我正在創建一個簡單的MVC Web API演示,如下所示。

[HttpPut("{id}")]
public async void Put(int id, [FromBody]Student student)
    {
        if (ModelState.IsValid)
        {
            var stu = _context.Students
                .Where(s => s.StudentId == id)
                .SingleOrDefault();

            var updateResult = await TryUpdateModelAsync<Student>(stu, "", s => s.FirstName, s => s.LastName, s => s.EnrollmentDate);
            _context.SaveChanges();
        }

    }

問題是TryUpdateModelAsync不起作用,更改沒有更新到數據庫。

我在想:

  1. 如果可以在MVC Web API中使用TryUpdateModelAsync

  2. 我真的不想寫下面的無聊代碼,如何避免從一個對像到同一類型的另一個對象的屬性值設置? (這是我使用TryUpdateModelAsync第一個原因)

    stu.FirstName = student.FirstName;
    stu.LastName = student.LastName;
    stu.SomeOtherProperties = student.SomeOtherProperties;
    _context.SaveChanges();
    

.NET核心版本:1.1.0

ASP.Net核心版本:1.1.0

實體框架核心版本:1.1.0

熱門答案

FromBody使用格式化程序將請求主體反序列化為JSON對象。

TryUpdateModelAsync依賴於模型綁定,並使用值提供程序來獲取數據。

您可以將發布的數據更改為使用模型綁定的表單帖子。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因