4

目立たない検証を備えたMVC3アプリケーションがあります。ビューの1<form action=''>..</form>つには、2つのボタンがあります。「action1」の最初のボタン送信フォームと「action2」の2番目のボタン送信。最初のケースではフォームを検証する必要がありますが、2番目のケースでは検証なしで投稿する必要がありますか?現在、モデルは両方の場合で検証されます。

4

3 に答える 3

2

私は答えを見つけました。'action2'の検証を無効にするには、コントローラーで次のメソッドを実行する必要があります。

ModelState.Clear(); 

とビューで

Html.EnableClientValidation(false);
于 2012-07-10T09:07:08.613 に答える
1

Asp.net MVCを実行してからしばらく経ちましたが、これはあなたが探しているものですか?

@if(false) { // Replace false with your model property
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
}
于 2012-07-09T15:56:04.410 に答える
1

いくつかのオプションがあります。

1)ControllerアクションでModelState.IsValidを使用しないでください。action1で、フォームを検証するjavascriptメソッドを実行します。フォームが有効な場合は、フォームを送信してください。action2では、ModelState.IsValidを使用していないため、フォームを送信すると、コントローラーアクションが実行されます。

2)ControllerアクションでModelState.IsValidを使用します。2つの送信ボタンに同じ名前を付けます(つまり、「SubmitButton」)。それぞれの送信ボタンの値として「action1」と「action2」を割り当てます。SubmitButtonを文字列パラメーターとしてControllerアクションに渡します。SubmitButton ='action1'の場合、ModelState.IsValidを照会します。それ以外の場合は、ModelState.IsValidをクエリしないでください。

オプション2コード

コントローラ:

[HttpPost]
public ActionResult SomeAction(ModelObject theModel, string SubmitButton)
{
    if (SubmitButton== 'Action1')
    {
        if(ModelState.IsValid)
        {
            //do some work
        } 
        else
        {
            return(View(theModel));
        } 

    }
    else //action2 has ben used to submit, so don't vaildate
    {
       //do some work
    }
}

意見:

<input type="submit" id="action1" name="SubmitButton" value="Action1"/> 
<input type="submit" id="action2" name="SubmitButton" value="Action2"/> 
于 2012-07-09T16:45:00.943 に答える