我是mvc的新手,想在我的注册页面添加一个额外的字段,它只是一个绑定到我模型中的表的下拉列表(组织名称和ID表)。但是,在我的默认应用程序中,我看到AccountController正在使用RegisterModel模型来创建寄存器表单视图。这很好,我不想打扰这个。但是我想在绑定到不同模型的页面上添加一个新的选择框(我的模型与组织一起)。我该如何做到这一点?
我发现其他帖子建议我为我的模型和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>
请注意,span和input的ID不再匹配。表格根本不再有用。这让我相信我采取了错误的做法。有没有更好的方法让我的选择列表在绑定到不同模型的页面上?
提前致谢。
答案 0 :(得分:0)
是否有更好的方法可以将我的选择列表绑定到页面上 不同型号?
如果模型不符合视图要求,则应修改此模型。在ASP.NET MVC中,设计视图模型并仅将视图模型传递给视图而不是域模型(例如EF自动生成的类,这就是fwfEntities
类型似乎是这样)是一种很好的做法。因此,设计一个视图模型,其中仅包含视图所需的属性,并让控制器操作查询数据库以获取模型,然后将模型映射到视图模型,最后将此视图模型传递给视图。
答案 1 :(得分:0)
在没有看到RegisterModel的情况下,我的猜测是,例如,ConfirmPassword没有必需的属性;
[Required(ErrorMessage = "A password is required")]
public string ConfirmPassword { get; set; }
哦,我相信id中的句点被替换为下划线,以免引起Jquery的问题。