对于我目前正在处理的一个项目,我目前有两个独立的users实例(稍后可能会增加):CorporateCustomer和PrivateCustomer。两者都继承自抽象类Customer。
为了显示这些客户之间的差异,目前创建了两个不同的视图,这两个视图由相同的Action以以下方式呈现:
[HttpGet]
public virtual ActionResult Edit()
{
if(User.IsCorporate)
return View("EditCorporate", new CorporateCustomer());
else
return View("EditPrivate", new PrivateCustomer());
}
[HttpPost]
public virtual ActionResult Edit(CorporateCustomer customer){...}
[HttpPost]
public virtual ActionResult Edit(PrivateCustomer customer){...}对于仅仅显示信息而言,这就像是一种魔力。每种类型的urls都是相同的,这就是我们的目标。
但是,在执行post时,我只能指定一个类型,否则可能会遇到不明确的操作方法(当然,这是有意义的)。
现在我的问题是:有没有什么优雅的方法来处理这两种不同的类型,同时仍然保留单一的url?或者,我注定要让基类成为非抽象的,并在Request.Form集合中查找值?
如果有人能想出一个解决方案(或者直接指出我正在做的事情是愚蠢的,不能做的),谢谢。
发布于 2013-04-15 23:28:51
您可以有一个接受两种参数类型的Action。
然后,模型绑定器应该用发布的任何数据填充它们,您可以找出Action方法中的哪一个是正确的。
[HttpPost]
public virtual ActionResult Edit( CorporateCustomer c, PrivateCustomer p )
{
...
}https://stackoverflow.com/questions/16017076
复制相似问题