从不同的 ViewModel 更新模型

时间:2021-02-11 13:16:02

标签: c# api asp.net-core controller viewmodel

我在 .net 核心解决方案中有以下类

public class User
{
    public virtual int ID { get; set; }
    public virtual string Name { get; set; }
    public virtual string Address { get; set; }
    public virtual string Address1 { get; set; }
    public virtual string ZipCode { get; set; }
    public virtual string City { get; set; }
    public virtual Enum.ValidateStatus ValidateStatus { get; set; }
    public virtual string ProfileImage { get; set; }
    public virtual string Phone { get; set; }
    public virtual string Mobile { get; set; }
    public virtual Enum.LoginType LoginType { get; set; }
    public virtual string PassWord { get; set; }

}

从那个类我创建了两个 ViewModel

public class ProfileViewModel
{
    public virtual int ID { get; set; }
    public virtual string Name { get; set; }
    public virtual string Address { get; set; }
    public virtual string Address1 { get; set; }
    public virtual string ZipCode { get; set; }
    public virtual string City { get; set; }
    public virtual string ProfileImage { get; set; }
    public virtual string Phone { get; set; }
    public virtual string Mobile { get; set; }
}

public class AdminViewModel
{
    public virtual int ID { get; set; }
    public virtual Enum.ValidateStatus ValidateStatus { get; set; }    
    public virtual Enum.LoginType LoginType { get; set; }

}

我在表单中使用两个模型并使用泛型更新

    public class SaveData<T>
    {
        public async Task<T> Save(T saveItem, IHttpClientFactory httpClientFactory)
        {
            var client = httpClientFactory.CreateClient();
            var content = new StringContent(JsonSerializer.Serialize(saveItem), Encoding.UTF8, "application/json");
            using (var response = await client.PostAsync("api/User/", content).ConfigureAwait(false))
            {
                var stringResult = (await response.Content.ReadAsStringAsync());
                var options = new JsonSerializerOptions { IncludeFields = true, PropertyNameCaseInsensitive = true };
                T result = System.Text.Json.JsonSerializer.Deserialize<T>(stringResult, options);
                return result;
            }
        }
    }

我的控制器看起来像:

    public ActionResult<Comito.Core.Model.Entity.User> Post([FromBody] JsonDocument saveItem)
    {
        var saveUserViewModel = JsonSerializer.Deserialize<ProfileViewModel>(saveItem.RootElement.ToString());
    }

在这个版本的控制器中,我假设传递的模型是 ProfileViewModel,这就是问题所在。无论如何,我在控制器中是否可以发现已发送的模型。

我知道我可以为每个模型创建一个控制器,但这不是我要走的路。

0 个答案:

没有答案
相关问题