我有了這兩個創建和編輯,我把他們分爲局部視圖中的項目的能力的看法:我有獨立的ViewModelsASP.net MVC - 綁定形式值不同的名稱
MainEditView.cshtml
_CreateChildDialog.cshtml
_EditChildDialog.cshtml
同時爲創建和子項:
public class CreateChildViewModel
{
public string ItemText { get; set; }
}
public class EditChildViewModel
{
public string ItemText { get; set; }
}
因爲用於編輯局部視圖,並創建對話框都將在同一個頁面上呈現,我將有形式的id和名稱衝突...因爲他們都被稱爲ItemText。
是否可以自定義這些元素的綁定而無需編寫自定義模型綁定器?
我想這樣做:
public class EditChildViewModel
{
[BindFrom("EditItemText")]
public string ItemText { get; set; }
}
或者它只是更有意義的視圖模型屬性重命名爲:基於與達林我converstation
public class EditChildViewModel
{
public string EditItemText { get; set; }
}
public class CreateChildViewModel
{
public string CreateItemText { get; set; }
}
編輯 想讓這個更清楚一點。
我的父母有編輯操作。 編輯父項時,當您調用ParentController.Edit操作時,絕不會創建新子項或編輯子項。
我有,有一個創建子對象和編輯方法單獨的控制器:
public class ChildController
{
public ActionResult Edit() {}
public ActionResult Create() {}
}
我使用jQuery調用異步張貼到該控制器時,編輯或創建一個孩子。基本上我使用jquery對話框來創建/編輯一個孩子,當我點擊對話框上的確定後,這個孩子會立即得到保存。甚至在單擊保存父級的「編輯」操作之前,也會發生這種情況。
如果將CreateChild/EditChild調用與父代分開獨立,這仍然適用嗎?我正在使用jQuery AJAX調用將其提交給與「父」項不同的控制器。 – Dismissile
@Dismissile,所以您發佈的操作分別將'CreateChildViewModel'和'EditChildViewModel'作爲參數?在這種情況下,您可以指定前綴,以便默認的模型綁定器可以成功綁定它:'public ActionResult Create([Bind(Prefix =「Create」)] CreateChildViewModel model){...}'。 –
是的。在我的情況下,你永遠不會保存一個父母和一個孩子。我會更新我的帖子以更清楚地反映這一點。 – Dismissile