我想創建一個模型視圖控制器,而不必爲單個控件設置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