2
我想編輯DinnerViewModel
(以下)作爲一個單元。有沒有一種乾淨的方式來編輯viewmodels及其各個組件模型?
我還想單獨編輯組件型號Drink
,MainCourse
和Dessert
。
我想爲兩者使用相同的剃鬚刀視圖。
public class DinnerViewModel
{
public Drink Drink {get;set;}
public MainCourse MainCourse {get;set;}
public Dessert Dessert {get;set;}
}
顯示字段修改
這似乎是確定的工作:
@model EditDinnerViewModel
@{Html.RenderPartial("_DrinkEditingFields", Model.Drink);}
@{Html.RenderPartial("_MainCourseEditingFields", Model.MainCourse);}
@{Html.RenderPartial("_DessertEditingFields", Model.Dessert);}
發佈至控制器
這是我在遇到麻煩。我想這樣做:
public ActionResult CreateDinner(DinnerViewModel dinner)
但是,因爲我已經呈現每個viewmodel組件作爲部分,它不會正確綁定。 (例如,字段名稱只是Veg
和Meat
而不是MainCourse_Veg
和MainCourse_Meat
)。
我希望我能得到它的工作是這樣的:
public ActionResult CreateDinner(Drink drink, MainCourse mainCourse, Dessert dessert)
但可以肯定,這是不好的設計(例如,如果2個車型共享相同的字段名稱,我會很麻煩)。
我認爲這可能是一個共同的要求。有經驗的開發人員如何處理這個問題
使用編輯器模板而不是部分視圖。 – dom 2015-02-07 19:01:05
太簡單了!我曾以爲他們只是單一的屬性,我沒有意識到你可以使用他們的整個模型。感謝Dom。如果你把它放到答案中,我會將它標記爲 – 2015-02-07 20:02:35
你也可以使用['UIHintAttribute'](https://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.uihintattribute%28v = vs.110%29.aspx)來聲明性地影響你的模型應該用於屬性的編輯器模板。 – HackedByChinese 2015-02-07 22:24:57