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 をバイパスすることはできません。

技術的には、フィールドは必須ではありません。したがって、Required の 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 条件付き検証

于 2011-02-03T19:19:50.103 に答える