C# 如何在asp MVC中分离查看多个文件中的html?
所以我现在很困惑。我刚刚在我的网站上完成了一些功能的实现,在我看来,网站变得非常大。我选择清理和分离视图,所以我有一个主视图和多个部分视图,这些视图被加载到主视图中。哦,天哪,我对更新/发布回复感到多么惊讶。经过一些研究,我发现局部视图根本不绑定到模型 如何在多个文件中实际分离视图?可以不向服务器发出额外请求吗?或者MVC只是建议拥有广阔的视野 这里有一种(非常简单的)方法。您需要使用ViewModelsC# 如何在asp MVC中分离查看多个文件中的html?,c#,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-4,model-view-controller,C#,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 4,Model View Controller,所以我现在很困惑。我刚刚在我的网站上完成了一些功能的实现,在我看来,网站变得非常大。我选择清理和分离视图,所以我有一个主视图和多个部分视图,这些视图被加载到主视图中。哦,天哪,我对更新/发布回复感到多么惊讶。经过一些研究,我发现局部视图根本不绑定到模型 如何在多个文件中实际分离视图?可以不向服务器发出额外请求吗?或者MVC只是建议拥有广阔的视野 这里有一种(非常简单的)方法。您需要使用ViewModels public class PageViewModel { public strin
public class PageViewModel
{
public string Title { .. }
public string Content { .. }
public MyFormViewModel MyForm { .. }
}
public class MyFormViewModel
{
public string Name { .. }
public string Address { .. }
// ... so on
}
您的主页视图:
@model PageViewModel
<h1>@Model.Title</h1>
<p>@Model.Content</p>
<div class="my-form">
@Html.Partial("_MyForm", Model.MyForm)
</div>
在主页视图中,您会注意到
@Html.Partial()
。这将使用模型的属性加载分部,在本例中,该属性为MyForm
。因此,您的partial将有一个@model
的@MyFormViewModel
可以为您的主视图添加标记吗?如果您的partial基于模型中的属性(例如复杂对象),那么控件将无法正确命名,除非您(a)将主模型传递给partial或(b)指定HtmlFieldPrefix
(请参阅示例)。或者,您可以对typeof属性使用自定义编辑器或模板。
@model MyFormViewModel
@using(Html.BeginForm())
{
<label>Name</label>
@Html.TextBoxFor(m => m.Name)
}
// Load Page
[HttpGet]
public ActionResult MyPage()
{
var viewModel = new PageViewModel();
viewModel.MyForm = new MyFormViewModel();
return View(viewModel);
}
// SubmitForm: Accepts MyFormViewModel
[HttpPost]
public ActionResult MyPage(MyFormViewModel viewModel)
{
// do something with form data
}