MVC 5控制器方法合并

时间:2015-10-17 16:56:06

标签: c# asp.net-mvc controller asp.net-mvc-5

我希望将MVC 5项目中的一些控制器功能卸载到单个功能中。两个视图都是从基础视图继承传递的。

CompetitionsViewModel:CompRegisterViewModel

到目前为止,这似乎有效:

        private async Task<bool> RegisterUser(RegisterViewModel model, string returnUrl = "")
            {...}

致电代码:

bool passed = await RegisterUser(model);

但有几个问题:

  1. 当其中一个控制器使用从另一个视图继承的视图时,这是否是正确的方法,并且你想要一个单独的函数?
  2. 在这个函数中使用async有什么我应该关注的吗? - 模型错误(ModelState.AddModelError)是否会在此函数中按预期工作?一切似乎都在表面上起作用,但在此之前我确实有大量的自定义JQuery处理大量的纠错。
  3. 即使这是一个异步过程,模型仍然会作为ref传递(现在不太关注,但只是为了将来的知识)。
  4. 基本上这里发生的事情是我有一个能够注册的购物车。您也可以独立于购物车注册,因此我使用共享视图进行注册。因此,两个父视图都实现子视图,因此视图模型的继承似乎是最智能的路径。

    我在表中看到的选项是:在两个控制器功能中重新创建进程(重复代码?维护噩梦),创建一个接口(在添加字段/更改字段时必须在多个位置更新?),或者做我做的 - 一个处理两者的函数,而调用方法处理它们的非继承功能。

    您是否看到了第四个更好的选择,或者我的解决方案是否可以接受?

1 个答案:

答案 0 :(得分:1)

这个问题的答案如下:

  1. 仍然不确定最佳做法,但它确实运作良好。
    • 至于这是否被视为良好做法,我会发现复制代码是非常糟糕的做法,所以请把它当作它。
  2. 工作正常 - AddModelError等工作。
  3. 在正常情况下,对象通过引用传递,因此我假设&#34;是&#34;目前。如果我遇到问题,将会更新。