首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >二义性动作方法

二义性动作方法
EN

Stack Overflow用户
提问于 2013-04-15 21:57:03
回答 1查看 213关注 0票数 1

对于我目前正在处理的一个项目,我目前有两个独立的users实例(稍后可能会增加):CorporateCustomer和PrivateCustomer。两者都继承自抽象类Customer。

为了显示这些客户之间的差异,目前创建了两个不同的视图,这两个视图由相同的Action以以下方式呈现:

代码语言:javascript
复制
[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集合中查找值?

如果有人能想出一个解决方案(或者直接指出我正在做的事情是愚蠢的,不能做的),谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-15 23:28:51

您可以有一个接受两种参数类型的Action。

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

代码语言:javascript
复制
[HttpPost]
public virtual ActionResult Edit( CorporateCustomer c, PrivateCustomer p )
{
  ...
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16017076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档