1

パスワードページを忘れました。ユーザーがユーザー名を入力し、[検証]ボタンをクリックして、自分がどのグループに属しているかを確認します。グループに基づいて、さまざまな部分ビュー(今のところ電話番号としましょう)を表示する必要があります。ページ。有効な詳細を入力した後、成功した場合は新しいページにリダイレクトし、そこでパスワードを更新します。失敗した場合は、エラーメッセージを表示する必要があります。

今、私はハイライトされたコードを書くのに苦労しています。

送信ボタンのクリックでトリガーされるJqueryajax関数のコードは次のとおりです

person = {UserName: $("#UserName").val(), Phone: $("#Phone").val() }
$.ajax({
            type: 'POST',
            url: '@Url.Action("ForgotPassword", "Customer")',
            data: person,
            dataType: 'json',
            success: function (data) {
                //This is the place I need help
                if(data.IsDataValid){
                  // redirect to new page passing the model object
                }
                else{
                    //Show an error message without hiding the div
                }
            },
            failure: function () {                   
            }
        });

これがコードコントローラーアクションです

    [HttpPost]
    [ValidateInput(true)]
    public ActionResult ForgotPassword(RegisterModel model)
    {            
        if (Request.IsAjaxRequest())
        {
            Here is the logic which validates the user
            return Json(new { regmodel = RegistrationModel })
        }
    //If it is not ajax call I want to return the view
        if (isUsergroup1 == true)
        {
            return View("View1", RegistrationModel );
        }
        else if (isUsergroup2 == true)
        {
            return View("View2", RegistrationModel );
        }
        else
        {
            return View();
        }

    }

助けてください。前もって感謝します

4

2 に答える 2

1

これが私たちがしなければならない方法です。モデルを渡すことはできません。パラメータを渡すことができるのは、リンクのリダイレクトでのみです。また、変数をUrl.Actionに直接渡すことができるため、link.replaceを使用する必要があります。

person = {UserName: $("#UserName").val(), Phone: $("#Phone").val() }
 $.ajax({
        type: 'POST',
        url: '@Url.Action("ForgotPassword", "Customer")',
        data: person,
        dataType: 'json',
        success: function (data) {
            //This is the place I need help
            if(IsDataValid){
              var link = "@Url.Action("Actionname", "Controllername", new { username = "1", phone ="2" })";
                   link = link.replace("1", data.username);
                   link = link.replace("2", data.phone);
                   alert(link);
                   window.location.href= link ;
            }
            else{
                //Show an error message without hiding the div
            }
        },
        failure: function () {                   
        }
    });
于 2012-09-30T15:43:25.483 に答える
0

現在回答可能な質問の部分に対処する:

if(IsDataValid){
  // redirect to new page(
}
else{
    //Show an error message without hiding the div
}

リダイレクトするには、 を使用しますwindow.location.replace('url to new page');

「エラー メッセージ」部分については、jQuery UI を使用してダイアログを表示するか、次のようにエラー メッセージを挿入する非表示の div を作成します。

$('#errors').html(data.Errors).show();

Errorsこれは、 に検証メッセージを含む何らかのプロパティが呼び出されていることを前提としていますRegistrationModel

于 2012-09-29T18:08:07.860 に答える