gpt4 book ai didi

c# - 在 .NET MVC Controller 上,映射是什么?

转载 作者:行者123 更新时间:2023-11-30 22:17:15 26 4
gpt4 key购买 nike

所以我有一个采用奇特的 Cart 对象的操作方法:

[HttpPost]
public JsonResult BuildTransaction(Cart cart) { }

购物车模型:

public class Cart
{
public Guid UserId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public Address Address { get; set; }
}

我在路由中抛出一些 JSON,看起来像这样:

object cart = new {
UserId = uid,
FirstName = "John",
LastName = "Travlota",
Address = new {
Line1 = "Ramsdean Grange",
Town = "boom town",
PostCode = "dd7 7sx"
}
};
var request = client.PostAsJsonAsync("BuildTransaction", cart);

结果,我的 Controller 中有一个 Cart 类型的手推车可以玩。太棒了!

我的问题是,.NET 如何进行这种映射?我想象它在 OnActionExecute 中的某个地方,但它是做什么的/如何做的。

如果我想模仿这个功能,我会怎么做?如果 MVC 看起来完全能够在没有它的情况下完成它,我真的需要像 AutoMapper 这样的外部工具吗?

最佳答案

这是由 Model Binder 完成的。 (System.Web.Mvc.DefaultModelBinder)

您可以像这样实现自定义模型绑定(bind)器:

Controller :

public ActionResult Create([ModelBinder(typeof(CreateModelBinder))] CreateViewModel   vModel)
{

}

模型绑定(bind)器:

public class CreateModelBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
//assign request parameters here, and return a CreateViewModel
//for example
CreateViewModel cVM = new CreateViewModel();
cVM.Name = controllerContext.HttpContext.Request.Params["Name"];
return cVM;

}
}

更多信息:http://www.dotnetcurry.com/ShowArticle.aspx?ID=584 https://stackoverflow.com/a/1249602/1324019

关于c# - 在 .NET MVC Controller 上,映射是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16859148/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com