2016-11-24 10 views
0

エンティティを更新するためにajaxコールを実行してから、mvcコントローラで状態を返すsuccess = true ||エラーの場合はfalse。ASP.Net MVCとJQuery Ajax - ページがjsonの結果に置き換えられる

私の問題は、コントローラの復帰に起因しています。 ページが変更され、urlはmvcコントローラのアクションのURLになり、ページの内容はjsonの結果になります。

この問題の原因は何ですか。ここで

は私のjavascriptのメソッドのコードです:ここで

$("#submit-button").on("submit", "#formId", function (e) { 
    e.preventDefault(); 

    var form = $(this); 

    $.ajax({ 
     url: form.attr("action"), 
     dataType: 'Json', 
     method: form.attr("method"), 
     data: form.serialize(), 
     success: function (data) { 
      console.log(data); 
     } 
    }); 
}); 

は私のコントローラのコードです:

[HttpPost] 
public JsonResult UpdateEntity(UpdateEntityViewModel model) 
{ 
    if (ModelState.IsValid) 
    { 
     _updateEntityService.Execute(model); 
     return Json(new { success = true }); 
    } 

    return Json(new { success = false, ModelState.GetErrors() }); 
} 

、誰もが私が間違ってやっているものを私に指摘することができれば!ありがとうございます。

EDIT:

@using (Html.BeginForm("Entity", "UpdateEntity", new { Area = "MyArea" }, FormMethod.Post, new { @id = "formId" })) 
{ 
    // ... form code 

    <button id="submit-button" type="submit" class="btn btn-primary"> 
     Modifier 
    </button> 
} 
+0

通常の送信を行うためです。私は 'id =" submit-button "'を持つ要素が本当に 'form'を含んでいるのか疑問です。フォームのHTMLと送信ボタンを表示する –

+0

編集をチェックして、私のフォームコードを追加しました。私のコードは質問のために変更されていますが、私は二重チェックして両側に存在し、それらは同じです – Vince

+0

'$( '#formId).submit(function(e){e.preventDefault(); ....}) ; - あなたのコードはあなたの中のフォームのサブミットイベントをリッスンしています(他の方法ではありません) - あなたのスクリプトは決して実行されず、通常の処理をしています –

答えて

0
あなたは現在のスクリプトは、あなたの内側に存在する <form id="formId" ... >要素の提出イベントを処理している

$("#formId").submit(function(e) { 
    e.preventDefault(); 
    var form = $(this); 
    $.ajax({ 
     .... 
    }); 
}); 

にスクリプトを変更し

:ここ

は、フォームのコードがあります<button id="submit-button" ..>存在しない(ボタンはフォームの中にあります)、結果としてスクリプトは実行されず、通常の送信を行いますJsonResultを新しいページに返します。

関連する問題