2013-08-07 4 views
1

몇 가지 비슷한 질문을 보았지만 작동시키지 못했습니다.Ajax.BeginForm이 작동하지 않는 이유는 무엇입니까?

양식에 일부 라디오 버튼이 있습니다. 옵션을 선택하고 제출 버튼을 클릭하는 대신 사용자가 라디오 버튼을 클릭 할 때 양식을 제출하고 싶습니다.

그래서 제출 단추를 숨기고 버튼 클릭을 에뮬레이션하는 자바 스크립트 기능을 배치했습니다. 버튼 클릭으로 작동 시키려고했으나 문제가되지 않습니다. 내보기에

내가 가진 :

<script type="text/javascript" src="/Scripts/jquery-1.9.1/jquery-1.9.1.min.js" ></script> 
<script type="text/javascript" src="/Scripts/jquery-1.9.1/jquery.unobtrusive-ajax.min.js"></script> 

<script type="text/javascript"> 
    function change() { 
     $('#buttonradio').click(); 
    } 
</script> 

<h2>Dashboard</h2> 

<div class="Dashboard" id="itemsDshBrd" style="overflow:auto;height:97%;"> 

    <div id="DshBrdRadioGroup" style="float:right;font-size:small"> 

     <% using (Ajax.BeginForm("Index", "DshBrd", new { value = 1 }, new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "stations" })) { %> 

      <input class="radioclass" id="r1" name="radiogroup" type="radio" value="1" onclick="change()" checked/> A 
      <input class="radioclass" id="r2" name="radiogroup" type="radio" value="2" onclick="change()"/> B  
      <input class="radioclass" id="r3" name="radiogroup" type="radio" value="3" onclick="change()"/> C 
      <input class="radioclass" id="r4" name="radiogroup" type="radio" value="4" onclick="change()"/> D 

      <input id="buttonradio" type="submit" value="Submit" style="visibility:hidden"/> 

     <% } %>   

    </div> 

    <div id="stations"> 
     <% Html.RenderPartial("~/Views/DshBrd/Stations.ascx"); %> 
    </div> 

</div> 

내가 값을 보내고있다 것을 알고 * = 내 컨트롤러 1.

내가 가진 :

[HttpPost] 
public ActionResult Index(int value) 
{ 
    if (Request.IsAjaxRequest()) 
    { 
     return PartialView("~/Views/DshBrd/Stations.aspx"); 
    } 

    return View("~/Views/DshBrd/Index.aspx"); 
} 

Request.IsAjaxRequest()가 절대없는 곳 참된.

내있는 Web.Config도 OK입니다 :

<add key="ClientValidationEnabled" value="true" /> 
<add key="UnobtrusiveJavaScriptEnabled" value="true" /> 

어떤 아이디어?

+0

요청이 실제로 무엇인지 확인 했습니까? 아니면 심지어 여기 도착한다면? – Tdelang

+0

HttpRequestBase입니다. 나는 또한 HttpContext.Request.IsAjaxRequest()를 시도했지만 작동하지 않았다. – Lucas

답변

1

양식을 올바르게 제출하지 않은 것 같습니다.

시도는 전부 제출 '버튼을 제거하고 당신의 변경 코드를 교체 : 당신의 눈에 거슬리지 아약스가 제대로 작동하지 않는 것처럼

function change() { 
    $("#DshBrdRadioGroup form").submit(); 
} 

또한 소리가 난다. 다음을 확인하십시오.

  • ClientValidationEnabled는 web.config 앱 설정에서 true입니다.
  • web.config 앱 설정에서 UnobtrusiveJavaScriptEnabled가 true입니다.
  • 페이지의 어딘가에서 참조하는 jquery.unobtrusive-ajax.min.js 스크립트.
+1

같은 문제가 있습니다.'Index'를 호출하고'value'는 1이지만 Request.IsAjaxRequest()는 false입니다. – Lucas

+0

선택자 다음에'.trigger ('submit')'이 아니라'.submit()'을 의미한다고 생각합니다. – mitch

+0

@ 루카스는 왜 그것이 항상 거짓인지에 대한 나의 답을 봅니다. – mitch

0

먼저, 설명하는 내용에서 AJAX를 통해 정기적으로 게시물을 보내려고합니다. 결코 이 될 수 없습니다.

따라서 AJAX에서 쉽게 만들 수있는 http://malsup.com/jquery/form/과 같은 것을 사용해야합니다.

제출을 위해 AJAX를 사용하면 실제로 각 라디오 버튼 요소에 onclick을 사용할 필요가 없습니다. 나는 그 라디오 버튼 클래스 radioclass를 사용하는 유일한 라디오 버튼입니다 가정 다음처럼했을 것 :

$('.radioclass').click(function() { 
    $(this).parents('form:first').trigger('submit'); 
}); 
1

나는 모듈 바인더와 함께이 문제를 생각한다. 변수 이름을 에서 radiogroup으로 변경하십시오.

관련 문제