Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在asp MVC中分离查看多个文件中的html?_C#_Asp.net Mvc_Asp.net Mvc 3_Asp.net Mvc 4_Model View Controller - Fatal编程技术网

C# 如何在asp MVC中分离查看多个文件中的html?

C# 如何在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

所以我现在很困惑。我刚刚在我的网站上完成了一些功能的实现,在我看来,网站变得非常大。我选择清理和分离视图,所以我有一个主视图和多个部分视图,这些视图被加载到主视图中。哦,天哪,我对更新/发布回复感到多么惊讶。经过一些研究,我发现局部视图根本不绑定到模型

如何在多个文件中实际分离视图?可以不向服务器发出额外请求吗?或者MVC只是建议拥有广阔的视野

这里有一种(非常简单的)方法。您需要使用ViewModels

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
}