如何在ASP.net MVC2中进行条件必需的字段验证

时间:2011-02-18 11:24:44

标签: asp.net-mvc-2

我有2个,一个是更新用户详细信息,另一个是更改密码面板。两者都有单独的“更新”按钮。当我点击更改密码的更新按钮时,我不希望验证用户详细信息部分,反之亦然。目前我在View中使用以下代码。

    [Required]
    [DataType(DataType.Password)]
    [DisplayNameLocalized(typeof(CapnorResource), "RepeatNewPassword")]
    public string RepeatNewPassword { get; set; } 
UI中的

是代码。

        <div class="passwordtd">
            <%: Html.LabelFor(view => view.RepeatNewPassword)%>
            <%: Html.PasswordFor(view => view.RepeatNewPassword)%>
            <%: Html.ValidationMessageFor(view => view.RepeatNewPassword)%>
        </div>

2 个答案:

答案 0 :(得分:0)

我不太确定问题的措辞,但是有两个不同的按钮,它听起来像是两个不同的形式,有两个不同的ViewModel。 ViewModel可以组成一个大型ViewModel,或者您可以使用RenderPartial将它们完全分开。

答案 1 :(得分:0)

我有同样的情况,几乎没有扭曲。 我有一个帐户页面,更改密码是在主页面内呈现为部分,更改密码有自己的更新按钮,部分在div id =“secure”标签内呈现,该标签隐藏在$(文档)中。准备()。主帐户详细信息页面上有一个链接,用于取消隐藏div。

我实现了部分验证如下 1)在表格标签上创建一个临时的div 2)在$(document).ready()上,我将更改密码部分附加到临时div,因此当主帐户详细信息验证被触发时,不会触发更改密码的验证。
3)当点击取消隐藏更改密码部分的链接时我再次将更改密码部分附加到表单然后更改密码部分的更新按钮我手动调用验证方法

var validator = $(“form”)。validate();             var oldpass = document.getElementById(“OldPasswordfeild”);             var newpass = document.getElementById(“NewPasswordfeild”);             var conpass = document.getElementById(“ConfirmPasswordfeild”);

        if (!validator.element(oldpass) || !validator.element(newpass) || !validator.element(conpass)) 
        {
            isvalid = false;

        }

所以只更改密码部分验证被触发,如果它们有效,我会向我的控制器发一个ajax帖子,如果成功,则隐藏div并再次将其附加到表格的临时div。

上面的东西就像一个魅力。