我的看法是,我的观点有许多片面的看法,我需要把匹配模式传给每一个人。
我找到了两种方法来做这个, 但我不知道应该怎么做。
我本想创造大阶级, 将所有模型都作为属性, 而不是我能将模型发送到每个局部观点。问题在于它硬打字, 以及如果我需要通过不同模型的组合, 它不合适。
反之,我想在每种模型中都有一种方法, 将每种局部视图的模型( GetMenuBar () 等) 带给我。
什么是正确的方法 这样做?
我的看法是,我的观点有许多片面的看法,我需要把匹配模式传给每一个人。
我找到了两种方法来做这个, 但我不知道应该怎么做。
我本想创造大阶级, 将所有模型都作为属性, 而不是我能将模型发送到每个局部观点。问题在于它硬打字, 以及如果我需要通过不同模型的组合, 它不合适。
反之,我想在每种模型中都有一种方法, 将每种局部视图的模型( GetMenuBar () 等) 带给我。
什么是正确的方法 这样做?
我的建议, 与选项 1 使用我的所有主视图/ 多重部分视图设置, 很容易维持, 因为每个部分都有自己的视图模式。 它让整件事保持美好和干净 。
我使用完全相同的设置 像这样:
public class MainViewModel {
public Partial1ViewModel Partial1 [ get; set; }
public Partial2ViewModel Partial2 [ get; set; }
public Partial3ViewModel Partial3 { get; set; }
public Partial4ViewModel Partial4 { get; set; }
public MainViewModel() {}
public MainViewModel() {
Partial1 = new Partial1ViewModel();
Partial2 = new Partial2ViewModel();
Partial3 = new Partial3ViewModel();
Partial4 = new Partial4ViewModel();
}
}
每个 PartialViewXViewModel
是它自己的视图模式,如果需要,可以在另一个视图中重新使用。
你的动作可以看起来是这样的:
public ActionResult Index {
var model = new MainViewModel();
return View(model);
}
您的视图视图
@model MainViewModel
<div>
{@Html.RenderPartial("PartialOne", Model.Partial1)}
</div>
<div>
{@Html.RenderPartial("PartialTwo", Model.Partial2)}
</div>
<div>
{@Html.RenderPartial("PartialThree", Model.Partial3)}
</div>
<div>
{@Html.RenderPartial("PartialFour", Model.Partial4)}
</div>
定义每个 PartialX
的用户界面如下:
@model Partial1ViewModel
//view html here
现在,每个部分视图 html 和他们使用的每个模型 都可以在任何地方使用。
最大的部分是, 如果您有一个页面只需要其中两个, 您只需创建一个新的 < code> ViewModel code > 来表达这个特定视图, 像这样 :
public class OtherMainViewModel {
public Partial2ViewModel Partial2 [ get; set; }
public Partial4ViewModel Partial4 { get; set; }
public OtherMainViewModel() {}
public OtherMainViewModel() {
Partial2 = new Partial2ViewModel();
Partial4 = new Partial4ViewModel();
}
}
用在另一种观点上,就像这样:
public ActionResult SomeOtherAction {
var model = new OtherMainViewModel();
return View(model);
}
这完全可以接受,也是MVC的首选设计策略, 要有视觉模型, 具体代表一种观点需要什么, 并且只代表它需要什么。
您可能想要使用不同的方法来弹出您的模型。 多数情况下, 这里推荐使用自动映射器。 无论哪种方式, 以上都只是初始化了 MainViewModel 的构建器中的部分ViewX 模式。 如果您正在用 DB 中的数据来弹出这些模型, 情况就不一定是你。 您会希望您自己为此制定策略 。 这将在这里有效 :
public ActionResult Index {
var model = new MainViewModel();
model.Partial1 = GetPartial1Data(); // this method would return Partial1ViewModel instance
model.Partial2 = GetPartial2Data(); // same as above for Partial2ViewModel
...
return View(model);
}
这一切只会让你从设计开始, 你可以把它调整到心的内容:-)
What is the use of default keyword in C#? Is it introduced in C# 3.0 ?
I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...
I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...
I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...
I have two EF entities. One has a property called HouseNumber. The other has two properties, one called StartHouseNumber and one called EndHouseNumber. I want to create a many to many association ...
How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...
Since I cannot order my dictionary, what is the best way of going about taking key value pairs and also maintaing an index?
Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...