【发布时间】:2021-07-21 07:12:33
【问题描述】:
看起来我的模型没有正确绑定,并且字段都是空的。我在网上看过,似乎没有一个解决方案对我有用。我所有的属性都有 setter 和 getter,JSON 的属性名称与模型匹配,我正在对其进行字符串化。我正确设置了我的标题。也许我没有设置一些简单的东西。也许缺少一个包裹?调用不正确?
在前端这就是我发布 JSON 的方式
fetch("/Admin/SaveUser", {
method: "Post",
headers: {
"Content": "application/json",
'Accept': 'application/json;charset=utf-8'
},
body: JSON.stringify(userData)
}).then(response => {
response.json().then(result => {
UpdateDisplay();
});
});
userData的内容
{"UserId":"4dd9f40e-a9ad-418e-9954-e9459c5db1af","FirstName":"Jack","LastName":"","EmployeeCode":"",
"PhoneNumber":"","Email":"jthor@stackoverflow.com"}
我的控制器方法
[HttpPost]
public JsonResult SaveUser(UserModel user)
{
UserModel.UpdateUser(user);
return Json(false);
}
我的模特
public class UserModel
{
public Guid UserId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public string PhoneNumber { get; set; }
public string EmployeeCode { get; set; }
public List<string> UserRoleIds { get; set; }
public List<string> UserRoleNames { get; set; }
public List<SelectListItem> Roles { get; set; }
public UserModel()
{
UserRoleIds = new List<string>();
UserRoleNames = new List<string>();
Roles = new List<SelectListItem>();
}
}
【问题讨论】:
-
您的模型将 UserId 声明为 GUID,它是一种数字类型,但您的输入 JSON 包含该属性的字符串。模型活页夹不太可能让您逃脱惩罚。尝试将 UserId 属性的数据类型更改为字符串。
-
@DaveHolden 字段仍未绑定
-
@DaveHolden 这是.Net Guid。他提供的内容是正确的,如果他解决了他的绑定问题,将绑定到该属性。您来自哪个系统,Guid 是数字类型?
-
@CallumMorrisson 来自 Microsoft 文档:“GUID 是一个 128 位整数(16 个字节),可以在需要唯一标识符的所有计算机和网络中使用。这样的标识符具有非常被复制的可能性很小。” docs.microsoft.com/en-us/dotnet/api/system.guid?view=net-5.0
-
@DaveHolden 不幸的是,找到一些几乎支持您的原始前提的文档并不会改变 在实践中 Guid 不是 .Net 中的数字类型的事实。所以我想我最初的问题仍然是,“你来自哪个系统,Guid 是数字类型?”
标签: javascript c# json model-view-controller