mvc替代多个视图和控制器使用if-else
我想创建一个模型视图控制器,而不必为单个控件设置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不会理解如何放置子属性。
我完全不明白你的问题,但还不错,还有对任何错误抱歉。
public class Thing1Model()
{
public int type {get; set; }
public string Name {get; set;}
}
public class Thing2Model() : Thing1Model
{
public DateTime MyDate {get; set;}
}
,并在您查看:// MODEL2
@using(Html.BeginForm(....))
{
@Html.PartialView("_myForm");
@Html.TextBoxFor(m=>m.MyDate);
}
和_myForm
有Thing1Model与内容的模型:
@Html.HiddenFor(m=>m.type);
@Html.LabelForI(m=>m.Name);
但是当将在视图(thing1),只使用:
@using(Html.BeginForm(...))
{
@Html.PartialView("_myForm");
}
好!我没有想到这一点。那么1)控制器只使用父模型来获取,发布? 2)视图可以在父模型上强类型吗? – heyNow 2014-09-29 20:23:43
模型用于呈现您的数据(文本框,标签等)。它只返回唯一的html。在f12浏览器上测试它。这是一个必要的信息。我更喜欢你用microsoftacademy学习:-)这里有三个伟大的课程(一个来自其他网站): http://www.microsoftvirtualacademy。com/training-courses/introduction-to-asp-net-mvc http://www.microsoftvirtualacademy.com/training-courses/developing-asp-net-mvc-4-web-applications-jump-start 和 http://pluralsight.com/training/Player?author=scott-allen&name=mvc4-building-m6-ajax&mode=live&clip=0&course=mvc4-building 真的很值得! :-) – W92 2014-09-29 20:29:30
您试图使用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