将viewModel传递给布局

本文关键字:布局 viewModel | 更新日期: 2023-09-27 18:01:14

我有一个视图模型,它有一些属性和我想应用的东西到布局页面:

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

从这里的其他线索中,我已经明白这是可能的,但我真的不明白如何做到。

据我所知,我需要以某种方式修改控制器,这就是我感到困惑的地方。我如何知道必须修改的控制器以及如何修改?感谢您的帮助。

将viewModel传递给布局

在控制器中,准备类似的操作

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>

下面是我的解决方案-

假设你有一个这样的模型-

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();
    }
 }

因此,基本上我们使用构造函数来启动模型,然后在控制器操作中分配适当的值。

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

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