将viewModel传递给布局

时间:2014-05-02 11:52:04

标签: c# asp.net-mvc viewmodel

我有这个viewmodel,它有一些我想要应用的属性和东西 到布局页面:

public class BasicViewModel
{
    public Page Page { get; set; }
    public List<Settings> Settings { get; set; }      
}

从其他线程我知道这是可能的,但我真的不明白如何。

根据我的理解,我不知何故需要修改控制器,这是我感到困惑的地方。我如何知道必须修改哪个控制器以及如何修改? 任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

在控制器中,准备像

这样的动作
public ActionResult BasicViewModelDemo
{
           BasicViewModel obj=new BasicViewModel()
           // assign properties

            return View(obj);
}

并查看写一些jquery。 (这里我使用敲击来制作视图模型)

<script>
   var model='@Html.Raw(Json.Encode(Model))';
   var viewmodel = ko.mapping.fromJSON(model);
</script>

答案 1 :(得分:0)

这是我的解决方案 -

假设你有这种模式 -

public class BasicViewModel
{
    public Page Page { get; set; }
    public List<Settings> Settings { get; set; }
}

public class Page
{
    public string PageName { get; set; }
}

public class Settings
{
    public string SettingName { get; set; }
}

然后在控制器中你应该以这种方式启动模型 -

public class HomeController : Controller
{
    BasicViewModel model;
    public HomeController()
    {
        model = new BasicViewModel();
        model.Page = new Page();
        model.Settings = new List<Settings>();
    }

    public ActionResult Index()
    {
        model.Page.PageName = "My Page";
        ViewBag.LayoutModel = model;
        return View();
    }
 }

基本上我们使用Constructor启动模型,然后在控制器操作中分配适当的值。

然后在Layout中,我们可以使用Model属性,如下所示 -

<div> @ViewBag.LayoutModel.Page.PageName </div>