2011-08-19 81 views
0

我是新來的mvc,並想添加一個額外的字段到我的註冊頁面,這是一個簡單的下拉列表綁定到我的模型中的表(組織名稱和ID )。但是,在我的默認應用程序中,我看到AccountController正在使用RegisterModel模型創建註冊表單視圖。這很好,我不想打擾這個。但是我想在綁定到不同模型的頁面上添加一個新的選擇框(我的模型與組織)。我該如何做到這一點?添加配置文件字段到註冊表格asp.net mvc3

我發現其他職位,建議我爲我的模型和RegisterModel創建一個包裝模型,但這是行不通的。我的包裝模型如下所示:

public class RegisterPeopleModel 
    { 
     public RegisterModel reg { get; set; } 
     public fwfEntities fwf { get; set; } 
    } 

現在,密碼的字段驗證程序不再有效。在查看代碼:

<div class="editor-field"> 
     @Html.PasswordFor(m => m.reg.ConfirmPassword) 
     @Html.ValidationMessageFor(m => m.reg.ConfirmPassword) 
    </div> 

現在呈現此:

<div class="editor-field"> 
       <input data-val="true" data-val-equalto="The password and confirmation password do not match." data-val-equalto-other="*.Password" id="reg_ConfirmPassword" name="reg.ConfirmPassword" type="password" /> 
       <span class="field-validation-valid" data-valmsg-for="reg.ConfirmPassword" data-valmsg-replace="true"></span> 
      </div> 

注意,跨度和輸入的ID不再匹配。表格不再有效。這讓我相信我採取了錯誤的做法。有沒有更好的方法讓頁面上的選擇列表綁定到不同的模型?

在此先感謝。

回答

0

有沒有更好的方式讓我的選擇列表綁定到 不同的模型?

如果模型不符合視圖的要求,您應該修改此模型。在ASP.NET MVC中,設計視圖模型並將視圖模型僅傳遞到視圖而不傳遞域模型是一種很好的做法(例如EF自動生成的類,它就是這種類型的似乎是)。因此,設計一個視圖模型,其中只包含視圖所需的屬性,並讓您的控制器操作查詢數據庫以獲取模型,然後將模型映射到視圖模型,最後將此視圖模型傳遞給視圖。

0

沒有看到RegisterModel我的猜測是ConfirmPassword沒有得到一個必需的屬性,例如;

[Required(ErrorMessage = "A password is required")] 
    public string ConfirmPassword { get; set; } 

哦我相信在ID期間被替換爲下劃線,以免引起jquery問題。

相關問題