首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MVC将对象与预期的API匹配

MVC将对象与预期的API匹配
EN

Stack Overflow用户
提问于 2021-01-15 20:31:30
回答 1查看 66关注 0票数 1

我正在尝试将此模型序列化为API所期望的模型。FirstName和LastName没有问题,但IntendedUse对象不匹配。我也需要它在视图中工作,所以我不确定如何更正模型以匹配API。任何帮助都是最好的。

API需要此表单中的数据

代码语言:javascript
运行
AI代码解释
复制
{
    "FirstName": "1",
    "LastName": "1",
    "SelectedProjectMaterial":
    [
        {   
            "IntendedUse":{
                "Value":47
            },
        }
    ]
}

序列化对象的当前输出

代码语言:javascript
运行
AI代码解释
复制
var json = JsonConvert.SerializeObject(model);

{"FirstName":"1",
 "LastName":"1",
  selectedIntendedUseId":{"Name":null,"Value":47,},
}

模型

代码语言:javascript
运行
AI代码解释
复制
[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; }

视图

代码语言:javascript
运行
AI代码解释
复制
<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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-15 21:47:33

创建Dto (查看模型),而不是直接使用域模型,如下所示

模型

代码语言:javascript
运行
AI代码解释
复制
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; }
}

并从您的操作方法或其他方法接收此模型,因此您的视图将如下所示

代码语言:javascript
运行
AI代码解释
复制
@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)

你的控制器就会像控制器一样

代码语言:javascript
运行
AI代码解释
复制
[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调用示例

代码语言:javascript
运行
AI代码解释
复制
$.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) {

    }
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65743167

复制
相关文章

相似问题

领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档