Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#MVC:使用ModelBinder的真正优势是什么?_C#_Asp.net Mvc - Fatal编程技术网

C#MVC:使用ModelBinder的真正优势是什么?

C#MVC:使用ModelBinder的真正优势是什么?,c#,asp.net-mvc,C#,Asp.net Mvc,我想知道使用ModelBinder的真正可测量优势是什么 模型活页夹 MVC中的模型绑定器提供了 映射已发布表单值的简单方法 到.NET Framework类型并传递 键入一个动作方法作为 参数活页夹也给你 控制数据的反序列化 传递给操作的类型 方法。模型绑定器与类型类似 转换器,因为它们可以转换 将HTTP请求转换为 传递给操作方法。然而, 他们也有关于 当前控制器上下文 从 模型活页夹 MVC中的模型绑定器提供了 映射已发布表单值的简单方法 到.NET Framework类型并传递 键入一个

我想知道使用ModelBinder的真正可测量优势是什么

模型活页夹

MVC中的模型绑定器提供了 映射已发布表单值的简单方法 到.NET Framework类型并传递 键入一个动作方法作为 参数活页夹也给你 控制数据的反序列化 传递给操作的类型 方法。模型绑定器与类型类似 转换器,因为它们可以转换 将HTTP请求转换为 传递给操作方法。然而, 他们也有关于 当前控制器上下文

模型活页夹

MVC中的模型绑定器提供了 映射已发布表单值的简单方法 到.NET Framework类型并传递 键入一个动作方法作为 参数活页夹也给你 控制数据的反序列化 传递给操作的类型 方法。模型绑定器与类型类似 转换器,因为它们可以转换 将HTTP请求转换为 传递给操作方法。然而, 他们也有关于 当前控制器上下文


从。

而不是将原语发送到您的操作中:

public ActionResult Search(string tagName, int numberOfResults)
您将获得一个自定义对象:

public ActionResult Search(TagSearch tagSearch)

这使您的搜索操作“更薄”(一件好事),更易于测试,并减少维护。

而不是将原语发送到您的操作中:

public ActionResult Search(string tagName, int numberOfResults)
您将获得一个自定义对象:

public ActionResult Search(TagSearch tagSearch)

这使您的搜索操作“更轻薄”(这是一件好事),更易于测试并减少维护。

还有另一个好处:

您可以创建ModelBinder,从数据库中检索仅给定ID的对象

这将允许您执行类似的操作

// GET /Orders/Edit/2
public ActionResult Edit(Order order){
  return View(order);
}
定制的
ModelBinder
将为您执行数据获取,使您的控制器保持精简

如果没有
ModelBinder
,它可能看起来像这样:

// GET /Orders/Edit/2
public ActionResult Edit(int id){
  var order = _orderRepository.Get(id);
  // check that order is not null and throw the appropriate exception etc
  return View(order);
}

还有一个好处:

您可以创建ModelBinder,从数据库中检索仅给定ID的对象

这将允许您执行类似的操作

// GET /Orders/Edit/2
public ActionResult Edit(Order order){
  return View(order);
}
定制的
ModelBinder
将为您执行数据获取,使您的控制器保持精简

如果没有
ModelBinder
,它可能看起来像这样:

// GET /Orders/Edit/2
public ActionResult Edit(int id){
  var order = _orderRepository.Get(id);
  // check that order is not null and throw the appropriate exception etc
  return View(order);
}

你把这两个例子换了吗?你把这两个例子换了吗?