2011-02-25 122 views
13

你好,我最近開始了一個大大的JQuery/jQueryUI的基於ASP.NET的網站上的工作。當時的想法是隻有一個頁面,有內容的其餘部分是動態的,等通過對話和Ajax裝載塊。然而HtmlFieldPrefix不映射模型

問題是,當一個創建&爲同一模型編輯形式在對話框打開的同時一些jQueryUI的部件,如DatePicker的停止工作的形式導致DOM來對字段中的重複的ID,其都存在於兩者中。

所以我嘗試使用控制器上此代碼:

ViewData.TemplateInfo.HtmlFieldPrefix = "Create"; // or Edit etc 

這個工作來解決的DatePicker問題,但字段不再映射到模型時,他們被送回控制器。

有誰知道如何解決這個問題?

回答

26

你可以嘗試指定相同的前綴綁定回來的時候:

[HttpPost] 
public ActionResult Create([Bind(Prefix = "Create")] CreateViewModel model) 
{ 
    ... 
} 
1

對於具有相同問題的人,你也可以只重命名你的模型,以「創造」,如下圖所示:

[HttpPost] 
public ActionResult Create(CreateViewModel create) 
{ 
    ... 
} 

我認爲這看起來更好,但有點危險。如果另一位開發人員或您決定稍後更改參數名稱,表單將會中斷,這是不理想的。

我想通了這一點作爲我的一種形式是正確結合,另一個是沒有。一個有前綴作爲參數名稱,另一個只是「模型」。