【发布时间】:2015-02-22 16:39:23
【问题描述】:
我为我的问题做了一个非常简单的模型。
如果我有一个复杂的人 viewModel:
public class PersonViewModel
{
public string Name { get; set; }
public List<DogViewModel> Dogs { get; set; }
}
public class DogViewModel
{
public string Name { get; set; }
}
我有 2 个视图:编辑人员和创建人员:
@model Custom.Models.PersonEditViewModel
@{
ViewBag.Title = "Edit";
}
<h2>Edit Person</h2>
<div class="PersonDataArea">
//this contain identical html in Create and Edit view
</div>
<div class="SelectDogAre">
//this contain identical html in Create and Edit view
</div>
<input type="button" value="save" />
@model Custom.Models.PersonCreateViewModel
@{
ViewBag.Title = "Create";
}
<h2>Create Person</h2>
<div class="PersonDataArea">
//this contain identical html in Create and Edit view
</div>
<div class="SelectDogAre">
//this contain identical html in Create and Edit view
</div>
<input type="button" value="save"/>
当然每个视图都有 2 个 ViewModel:
public class PersonEditViewModel
{
public PersonViewModel Person { get; set; }
}
public class PersonCreateViewModel
{
public PersonViewModel Person { get; set; }
}
问题:
如您所见,我在创建和编辑视图中有 2 个相同的区域,我想避免重复代码。我不能使用局部视图,因为局部视图中的模型不会绑定在帖子上。如何避免重复查看代码?
【问题讨论】:
-
“我不能使用局部视图”——这是一个有缺陷的陈述。没有理由你不能?
-
如何在发布请求时将数据部分视图绑定到 Mainview?
-
不确定你在问什么。你的意思是,如何将数据绑定到局部视图中?或者局部视图如何以 POST 的形式将数据传回?
-
局部视图如何将数据传回帖子?
-
如果
PersonEditViewModel和PersonCreateViewModel相同并生成相同的html,为什么会有单独的视图模型?除非您将主模型传递给局部模型或指定HtmlFieldPrefix(Refer this answer),否则局部变量不会绑定。
标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 model-view-controller