Asp.net mvc 为什么';ASP.NET MVC是否使用通用操作方法?

Asp.net mvc 为什么';ASP.NET MVC是否使用通用操作方法?,asp.net-mvc,Asp.net Mvc,一般性问题当我开始实现ASP.NET MVC时,我发现自己在问,为了避免通过框架装箱和拆箱(查看“视图”的签名),为什么他们不简单地使用通用方法进行操作?也许他们“应该”,但他们没有,但也许有人知道一个很好的理由 提前谢谢 对不起,一个例子是这样的 Edit(int id) { ... if(...) View<Contact>("Edit"); else View<ShoppingCart>("Cart"); } 编辑(int-id) {

一般性问题当我开始实现ASP.NET MVC时,我发现自己在问,为了避免通过框架装箱和拆箱(查看“视图”的签名),为什么他们不简单地使用通用方法进行操作?也许他们“应该”,但他们没有,但也许有人知道一个很好的理由

提前谢谢

对不起,一个例子是这样的

Edit(int id)
{
  ...
  if(...)
    View<Contact>("Edit");
  else
    View<ShoppingCart>("Cart");
}
编辑(int-id)
{
...
如果(…)
查看(“编辑”);
其他的
视图(“购物车”);
}
编辑 更新了示例以更准确地反映我的问题,因此我可以这样做:

public ActionResult Customer(int id )
{
     try
     {
         var customer = DB.GetCustomer(id);

         if( customer == null )
         {
              return RedirectToAction("NoCustomerFound");
         } 

         if( customer.IsApproved )
         {
              return View( TransformToApproved("Approved", customer);
         }         

         return View( "Unapproved", TransformToUnapproved(customer));
     }
     catch(Exception e )
     {
         return View("Error", e );
     }
}
更新:

更新后的代码只是语法上的糖分。当MVC管道开始执行操作并呈现视图时,模型仍然会被装箱并解除装箱

即使如此,如果你写了这样的东西,我假设你真的想在某个地方传递一个模型。你的例子没有包括它

public ActionResult View<MODEL>(string view, MODEL viewModel )
{
     return View(view, viewModel );
}

为了增加一些额外的趣味,加入一个“return RedirectToAction”,它根本不是一个视图,而仅仅是另一个ActionResult。问题是为什么框架没有通用方法的签名,但是如果框架提供了它,装箱和拆箱就不需要发生,对吗?@Benny-是的。如果框架被设计为非box/unbox,它将不会box/unbox。您可以创建一个自定义ModelBinder,以接收指定为int的联系人,如:Edit(Contact Contact){return View(contect)}此处有更多信息
return View("Edit", contact );