我想创建一个模型视图控制器,而不必为单个控件设置if-else,或者不得不复制这些控件以处理不同的屏幕控件。
目前我有: -mvc替代多个视图和控制器使用if-else
//控制器
public ActionResult DisplayThing1(int thingType, string thingName){
Thing1Model model = new Thing1Model();
return View(model);
}
[HttpPost]
public ActionResult DisplayThing1(Thing1Model model)
{
Save(model);
return RedirectToAction("DisplayThing1");
}
//模型
public class Thing1Model()
{
public int type {get; set; }
public string Name {get; set;}
}
//视图
@using(Html.BeginForm(....))
{
@Html.HiddenFor(m=>m.type);
@Html.LabelForI(m=>m.Name);
}
我已经几乎复制控制器Thing2Model
,该模型本身是
public class Thing2Model()
{
public int type {get; set; }
public string Name {get; set;}
public DateTime MyDate {get; set;}
}
组合视图如下所示。
@using(Html.BeginForm(....))
{
@Html.HiddenFor(m=>m.type);
@Html.LabelForI(m=>m.Name);
@if(type == "2")
{
@Html.TextBoxFor(m=>m.MyDate);
}
}
我找一个更好的选择,以避免@if
以及重复的代码
编辑: 添加到@ W92的答案。我们还需要更改模型联编程序以支持继承模型。 否则,在这段代码的视图中,MVC不会理解如何放置子属性。
您试图使用partialVie w或Html.Action()? (它返回PartialView)。在Html.Action中你可以放置一个参数等等。听起来很不错。对于服务Html.Action good的使用属性的操作:'[ChildActionOnly()]'(在谷歌中读取)或要求更多详细信息:-) – W92 2014-09-29 15:23:18
我想使用局部视图,但常见字段需要显示在不常见的。请参阅http://www.gliffy.com/go/publish/image/6238620/L.png。我如何用局部视图来做到这一点? – heyNow 2014-09-29 15:37:22
我不明白这个问题,你能详细解释一下吗? – W92 2014-09-29 19:28:17