1

对于我目前正在进行的项目,我目前有 2 个单独的用户实例(以后可能会增加):CorporateCustomer 和 PrivateCustomer。两者都继承自抽象类 Customer。

为了显示这些客户之间的差异,目前创建了 2 个不同的视图,它们由相同的 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){...}

对于仅显示信息,这就像一个魅力。每种类型的 url 都是相同的,这就是我们的目标。

但是,在发帖时,我只能指定一种类型,否则可能会遇到模棱两可的操作方法(当然,这是有道理的)。

现在我的问题是:是否有任何优雅的方式来处理这两种不同的类型,同时仍然保留一个 url?还是我注定要使基类非抽象并在 Request.Form 集合中查找值?

感谢是否有人能提出解决方案(或者直接指出我正在做的事情是愚蠢的,无法完成)

4

1 回答 1

2

你可以有一个 Action 接受这两种参数类型。

然后模型绑定器应该用发布的任何数据填充它们,您可以在 Action 方法中找出正确的数据。

[HttpPost]
public virtual ActionResult Edit( CorporateCustomer c, PrivateCustomer p )
{
  ...
}
于 2013-04-15T15:28:51.107 回答