我正在尝试将此模型序列化为API所期望的模型。FirstName和LastName没有问题,但IntendedUse对象不匹配。我也需要它在视图中工作,所以我不确定如何更正模型以匹配API。任何帮助都是最好的。
API需要此表单中的数据
{
"FirstName": "1",
"LastName": "1",
"SelectedProjectMaterial":
[
{
"IntendedUse":{
"Value":47
},
}
]
}
序列化对象的当前输出
var json = JsonConvert.SerializeObject(model);
{"FirstName":"1",
"LastName":"1",
selectedIntendedUseId":{"Name":null,"Value":47,},
}
模型
[Display(Name = "* First Name")]
[Required(ErrorMessage = "This field is required.")]
public string FirstName { get; set; }
[Required(ErrorMessage = "This field is required.")]
public string LastName { get; set; }
[Required]
public GenericValues selectedIntendedUseId { get; set; }
视图
<div>* Intended Use</div>
@Html.DropDownListFor(
x => x.selectedIntendedUseId.Value,
new SelectList(Model.ListOfIntendedUses, "Value", "Name"),
"-- please select a Intended Use--",
new { id = "ddlUses", @class = "form-control" }
)
@Html.ValidationMessageFor(x => x.selectedIntendedUseId.Value)
发布于 2021-01-15 21:47:33
创建Dto (查看模型),而不是直接使用域模型,如下所示
模型
public class ModelDto{
[Required(ErrorMessage = "This field is required.")]
public string FirstName { get; set; }
[Required(ErrorMessage = "This field is required.")]
public string LastName { get; set; }
[Required]
public int selectedIntendedUseId { get; set; }
}
并从您的操作方法或其他方法接收此模型,因此您的视图将如下所示
@model ModelDto
<div>* Intended Use</div>
@Html.DropDownListFor(x => x.selectedIntendedUseId,
new SelectList(ViewBag.ListOfIntendedUses, "Value", "Name"),
"-- please select a Intended Use--",
new { id = "ddlUses", @class = "form-control" })
@Html.ValidationMessageFor(x => x.selectedIntendedUseId.Value)
你的控制器就会像控制器一样
[HttpGet]
public IActionResult ControllerAction()
{
ViewBag.ListOfIntendedUses = //Select From DB or whatever
return View();
}
[HttpPost]
public IActionResult ControllerAction(ModelDto model)
{
model.selectedIntendedUseId = //you will get id here, use it for your logic
return View();
}
希望现在清楚了
ajax调用示例
$.ajax({
type: "POST",
url: "/ControllerName/ActionMethodName",
data: JSON.stringify(formData),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
},
error: function (req, status, error) {
}
});
https://stackoverflow.com/questions/65743167
复制