重用冗余视图模型代码mvc

时间:2010-11-01 04:33:32

标签: asp.net-mvc

我有一个主页面,它依赖于来自我页面的特定模型。所以基本上每个ViewResult的结束代码都会像这样结束

public ActionResult Details(long store_id)
{
    var store = getStore();

    var model = new ClientModel<StoreModel>(store)
        {
            UserNotifications = new UserNotificationModel(this.CurrentUser)
        };

    return View(model);
}

我的每个控制器都来自一个BaseController,所以我想把这个冗余的代码放在那里,但我不确定最好的方法。

我的通用ClientModel的结构就是这个......

public class ClientModel<T> : ClientModel {}

public class ClientModel {}

澄清 StoreModel是通用的,许多其他操作使用不同的视图模型。我只是想根据它在受到影响时的外观来展示。

2 个答案:

答案 0 :(得分:1)

protected ViewResult ClientModelView<T>(T model)
{
    var clientModel = new ClientModel<T>(model)
        {
            UserNotifications = new UserNotificationModel(CurrentUser)
        };

    return this.View(clientModel);
}

答案 1 :(得分:0)

查看我的类似question

基本上,您创建了一个基本控制器:

public class BaseController : Controller
{
    public Model GetModel() {}
}

然后所有控制器都从基地继承:

public class NewController : BaseController
{

    public ActionResult Details(long store_id)
    {

        var model = GetModel();

        return View(model);
    }

}