我在 .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,这就是问题所在。无论如何,我在控制器中是否可以发现已发送的模型。
我知道我可以为每个模型创建一个控制器,但这不是我要走的路。