-2

シナリオは、ユーザーにサインインするためのフォームがあり、アクション メソッドを呼び出すことです。アクション メソッドは、有効/無効なユーザー名に応じて true/false を返します。false を返す場合は、jquery メソッドでメッセージを表示する必要があります。値をモデルビューとして渡すことはできますが、問題はページが初めてリクエストされたときです。投稿のアクションメソッドがその時に呼び出されないため、その値は null であり、オブジェクト参照のようなエラーが表示されます null. このような状況をどのように処理するか。私はコードを提供していません.cozコーディングは私の問題ではありません.これを処理するためのベストプラクティスを知る必要があります. ありがとう。

OK、これが私が試したJqueryメソッドです。

<script type="text/javascript">

        $(document).ready(function () {
            (' #SignIn').click(function () {
                if (@Model.test === null) //Error is showing here, on the @Model.test call
                {
                $(' #Message').text("Null")
                }
                if(@Model.test===false)
                 {
                    $(' #Message').text("Invalid");
                }
            });
        });
    </script>
4

1 に答える 1

1

モデルのアクションから結果を返す場合は、POST 呼び出しの後に Java スクリプト操作を実行する必要があります。これを試して。

//In your Controller 

[HttpGet]
public ActionResult SomeAction()
{
    var model = new ModelView();
    model.test = false;
    return (model)
}   

[HttpPost]
public ActionResult SomeAction(ModelView model)
{
    if(ModelState.IsValid)
    {
        // write your logic here for validating user 
         model.test = true;
         return View(model);
    }
    model.test = false;
    return (model)
}  

// In View 

@model ViewModel 

@if (model.test == true)
{
    <script type="text/javascript">
        $(document).ready(function () {
            $(' #Message').text("Null")

        });

    </script>
}
else
{
 <script type="text/javascript">
    $(document).ready(function () {
         $(' #Message').text("Invalid");

    });

</script>
 }

状況に応じて解決策を提供しましたが、Ajax.BeginForm または javascriptを使用してフォームを送信し、アクションからJSONを返すことをお勧めします。

于 2012-11-05T06:36:25.437 に答える