如何解决MVC 匹配对象到 API 期望
我正在尝试将此模型序列化为 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)
解决方法
创建一个 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) {
}
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。