2011-08-19 82 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问题。

相关问题