0

我有一个使用 .NET MVC 编写的页面。在名为 PersonModel 的 Person 模型中,我定义了这个,它要求用户在姓氏字段中输入一些文本:

    <DisplayName("Last Name"), Required()> _
    Public Property LastName() As String
        Get
            Return _LastName
        End Get
        Set(ByVal value As String)
            _LastName = value
        End Set
    End Property

在表单上,​​有一个复选框,用户可以选中它来做一些其他事情。有没有办法,最好使用 JQuery,将姓氏字段更改为非必需?如果不使用 JQuery,我对其他建议持开放态度,但由于无论如何在选中此复选框时我正在做很多事情,我希望我可以在其中添加这个逻辑。这是选中此框以演示时我正在做的一些示例...

功能doOwnerBusiness(事件){

        if ($(this).is(':checked')) {

         $('input[name="People_1__LastName"], label[for="People[1]_LastName"]').hide();​
         $("#People_1__LastName").hide();
         $("#People_1__LastName").val("");
         $("#People_1__LastName :input").attr('disabled', true);               


            $('input[name="People[1]_Suffix"], label[for="People[1]_Suffix"]').hide();​
            $("#People_1__Suffix").attr('disabled', true);
            $('#People_1__Suffix')[0].selectedIndex = 0;
            $('#People_1__Suffix').hide();

       }

        else {

       $('input[name="People_1__LastName"], label[for="People[1]_LastName"]').show();          
            $("#People_1__LastName").show();
            $('#People_1__LastName :input').attr('disabled', false);

        }
    }

对此的任何帮助将不胜感激。

谢谢

威廉

这是我声明我的复选框的方式,也是我试图检查它是否被选中的功能的一部分......

                    <%=Html.CheckBoxFor(Function(model) model.FirstNameAsBusiness)%>
                    <%=Html.LabelFor(Function(model) model.FirstNameAsBusiness)%>



Function Nominate(ByVal m As NominationModel, ByVal captchaValid As Boolean) As ActionResult


    If Not m.FirstNameAsBusiness.checked AndAlso String.IsNullOrEmpty(m.lastnametext) Then
        ModelState.AddModelError("LastName", "Last Name field is required if you don't yada yada...")
        Return View()
    End If
4

1 回答 1

1

简短的回答:没有。您不能通过 jQuery 调用绕过 DataAnnotation。

从技术上讲,姓氏字段不是必需的。因此,我将删除必需的 DataAnnotation,然后在后端,当用户提交表单时,在未选中复选框时验证字段值是否存在。如果条件没有通过,并且该字段的 ModelState 出现错误,则重定向到页面。(为 c# 道歉):

public ActionResult Index(HomeIndexModel form)
{
    if (!form.Checked && string.IsNullOrEmpty(form.LastName))
    {
        ModelState.AddModelError("LastName", "Last Name field is required if you don't yada yada...");
        return View();
    }

    //conditional requirement passed...
}

如果你想更高级一点,你可以看看这个线程,虽然这里的所有建议也是服务器端的: ASP.NET MVC Conditional validation

于 2011-02-03T19:19:50.103 回答