0

私は、dbにユーザーを追加する必要があるユーザー管理アプリケーションに取り組んでいます。

When click of a button in client screen ( index.cshtml ), a JQuery dialog will popup and fill the user details ( Adduser.cshtml (partial class) ) . On click of Save button the data will pass to controller validate it and call the model method to add the user. If the user already exists the webservice will return error message. In controller the exception will be catched and wants to show it to user.

例外の後、エラーメッセージをアラートとして表示するか、AddUser.cshtmlに書き込む必要があります。以下は私が試したさまざまなオプションとその問題です

  1. return Partial( "AddUser"、model)-ここでの問題は、Adduser.cshtmlが別のページに表示され、クライアント画面にダイアログとして表示されないことです。

  2. 例外メッセージをTemDataに保存し、RedirectToAction( "index")に戻り、ページの読み込み時にAdduser.cshtmlを読み込もうとします-ここでの問題は、JQueryダイアログが空白になることです。

  3. return Json {new success = true}-問題は、メッセージが別のページを表示していて、正確なエラーメッセージを表示していないことです。

  4. return content(alert(errmessage))-アラートメッセージが表示されていますが、[OK]ボタンをクリックすると空白の別のページが表示されます。

  5. Adduser.cshtmlのJavascriptを使用してモデルメソッドを呼び出そうとしました-ユーザーを追加するためにモデルメソッドを呼び出すのは確実ではありません。成功した場合、Adduser.cshtmlからクライアント画面へのリダイレクトがどのように機能するか

誰かがこれについて私を助けてくれますか?

    [HttpPost]
    public ActionResult AddClient(ClientModel mCust, string command)
    {
        var clientObj = new Metadata.Client.Service.Client();
        ClientModel clientModel = new ClientModel();

        if (command == "Save")
        {

            if (!ModelState.IsValid)
            {
                return PartialView(mCust);
            }


            clientObj.ClientType = new Metadata.Client.Service.ClientType();
            clientObj.ClientName = mCust.Client.ClientName;
            clientObj.ClientCode = mCust.Client.ClientCode;
            if (mCust.ClientTypeSelectId != 0)
                clientObj.ClientType.ClientTypeId = (mCust.ClientTypeSelectId) - 1;
            else
                clientObj.ClientType.ClientTypeId = mCust.ClientTypeSelectId;

            try
            {
                clientObj = clientModel.AddNewClient(clientObj);
            }
            catch (Exception ex)
            {
                //TempData["addclient"] = null;
                //TempData["addclient"] = ex.Message;
                //mCust.SetClientTypeList();
                //mCust.WebResponse.Message = ex.Message;
                //return PartialView(mCust);

                // we're gonna show this in a ValidationSummary
                ModelState.AddModelError("", ex.Message);
                return PartialView("AddClient", mCust);

            }
        }

        return RedirectToAction("Index");

    }
4

1 に答える 1

0

それはあなたが探すべき行動の変化ではありません。基本的には、ajaxを使用してフォームを投稿する必要があります。コールバックメソッドでは、「成功」または「エラー」を確認し、そこからダイアログを表示できます。

次のように、ajaxの完了後にコールバックを行う必要があります。

<script type='text/javascript'>
function onSuccess(result){if(result.get_data()=='error'){alert('error'); }}
</script>

さらに拡張するには、この「error|error_message」のようにコントローラーからメッセージを送信できます。このようにして、result.get_data()を文字'|'で分割することにより、成功かエラーかを確認できます。渡されたメッセージを表示します。

于 2013-02-14T12:36:54.787 に答える