2013-03-26 10 views
6

Mam widok "Nadrzędny" w mojej aplikacji, używam przycisku @ Html.BeginForm & przycisku przesyłania, aby zapisać dane widoku rodzica. Mam również jeden częściowy widok w widoku Parent, próbuję wywołać metodę ajax (przy użyciu jQuery) z częściowego widoku, ale za każdym razem przekierowuje mnie do metody działania formy nadrzędnej.Kliknięcie przycisku z częściowego przekierowania do metody akcji nadrzędnej

Parent View 
@using (Html.BeginForm("Test1", "Home", new { id = 1 }, FormMethod.Get)) 
{ 
    @Html.Partial("TestPartial", Model) 
    <div> 
     <input id="Button1" type="submit" value="Parent" /> 
    </div> 
} 

Partial View 
<script> 
function onClientClick() { 
    $.ajax({ 
     url: "/Home/Test2", 
     type: "GET", 
     dataType: "json", 
     contentType: 'application/json; charset=utf-8', 
     data: JSON.stringify({ ID: 1 }), 
     cache: false, 
     success: function (data) { 
      alert('Success'); 
     }, 
     error: function (err, result) { 
      alert("Error" + err.responseText); 
     } 
    }); 
} 
</script> 
<div> 
<input type="submit" name="submit" onclick="onClientClick()" value="Submit" /> 
</div> 

każdym razem próbuję zadzwonić/home/test2 z częściowym widokiem przekierowuje mnie do/Home/Test1 (działania formy dominującej)

Odpowiedz

4

problem jest w tym wierszu:

<input type="submit" name="submit" onclick="onClientClick()" value="Submit" /> 

Typ jest submit dlatego przesyła formularz i przekierowuje do akcji w rodzicu.

W swojej częściowym widokiem mieć regularny nie buttonsubmit button żądać zawartości AJAX:

<input type="button" onclick="onClientClick()" value="Ajax Call" /> 

Można też return false jednak wierzę przy użyciu standardowego button zamiast submit jest bardziej odpowiedni w tym kontekście.

2

Return false po wywołaniu ajax ... u koniec onClientClick funkcji

LUB ponownie napisać swój przedstawić jako

<input type="submit" name="submit" id="submit" value="Submit" /> 

i Th pl w jQuery bnd zdarzenia click jako

$("submit").click(function(e){ 
e.preventDefault() 
$.ajax({ 
     url: "/Home/Test2", 
     type: "GET", 
. 
. 
. 

}); 

LUB Zmień typ input z submit do button

Powiązane problemy