我有一个视图模型,它有一些属性和我想应用的东西到布局页面:
public class BasicViewModel
{
public Page Page { get; set; }
public List<Settings> Settings { get; set; }
}
从这里的其他线索中,我已经明白这是可能的,但我真的不明白如何做到。
据我所知,我需要以某种方式修改控制器,这就是我感到困惑的地方。我如何知道必须修改的控制器以及如何修改?感谢您的帮助。
在控制器中,准备类似的操作
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>