将配置文件字段添加到注册表单asp.net mvc3

时间:2011-08-19 22:52:31

标签: asp.net-mvc-3 c#-4.0 razor

我是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不再匹配。表格根本不再有用。这让我相信我采取了错误的做法。有没有更好的方法让我的选择列表在绑定到不同模型的页面上?

提前致谢。

2 个答案:

答案 0 :(得分:0)

  

是否有更好的方法可以将我的选择列表绑定到页面上   不同型号?

如果模型不符合视图要求,则应修改此模型。在ASP.NET MVC中,设计视图模型并仅将视图模型传递给视图而不是域模型(例如EF自动生成的类,这就是fwfEntities类型似乎是这样)是一种很好的做法。因此,设计一个视图模型,其中仅包含视图所需的属性,并让控制器操作查询数据库以获取模型,然后将模型映射到视图模型,最后将此视图模型传递给视图。

答案 1 :(得分:0)

在没有看到RegisterModel的情况下,我的猜测是,例如,ConfirmPassword没有必需的属性;

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

哦,我相信id中的句点被替换为下划线,以免引起Jquery的问题。