2016-06-30 8 views
0

저는 timepicki (jquery timepickers 중 하나)를 사용하여보기의 DateTime 값을 컨트롤러, 특히 ActionResult Create 메서드에 전달했습니다. 내가보기에서 자바 스크립트로 작성된 아약스 호출에 대한 F12를 사용하여 소스 탭에서 테스트하고 사실, 값은 성공적으로 함수의 내부 변수에 저장되지만 컨트롤러에 그 값을 전달하지 않는 것 같습니다. 왜 컨트롤러에 가치를 전달하지 못하는지 내가 도와 줄 수 있습니까? 어떤 도움을 주셔서 감사합니다.ajax 호출을 사용하여보기에서 컨트롤러로 datetime 값을 전달합니다.

보기 :

@model test.Models.Employee 

@using (Html.BeginForm()) 
{ 
@Html.AntiForgeryToken() 

<div class="form-horizontal"> 
    <hr /> 
    @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 

    <div class="form-group"> 
     @Html.LabelFor(model => model.MondayId, "Monday: ", htmlAttributes: new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      Start: <input type="text" name="timepicker" class="time_element" id="monStart"/>     
     </div> 
    </div> 

    <div class="form-group"> 
     <div class="col-md-offset-2 col-md-10"> 
      <input type="submit" value="Create" class="btn btn-default" id="submit" onclick=""/> 
     </div> 
    </div> 
</div> 
} 

@section Scripts { 
@Scripts.Render("~/bundles/jqueryval") 
<script src="@Url.Content("~/Scripts/jquery.min.js")" type="text/javascript"></script>  
<script src="@Url.Content("~/Scripts/timepicki.js")" type="text/javascript"></script>  
<link href="@Url.Content("~/Content/timepicki.css")" rel="stylesheet" type="text/css" /> 

<script> 
    $(document).ready(function(){ 
     $(".time_element").timepicki(); 
    }); 
</script> 

<script type="text/javascript"> 
$("#submit").click(function() { 

     var monStart = $('#monStart').val();   

     $.ajax({ 
      url: '@Url.Action("Create", "Employees")', 
      data: { employee: null, monStart: monStart }, 
      type: 'POST', 
      success: function (data) { 
      }, 
      error: function (xhr, status, error) { 
       alert(xhr.responseText); 
      } 
     }) 
    }); 
</script> 
} 

컨트롤러 :

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Create(Employee employee, DateTime? monStart) 
    { 
     //codes 
    } 
+0

는'[ValidateAntiForgeryToken] '당신의 방법에 .... 당신의 아약스에 당신은 토큰을 전송하지 않습니다 호출 :) – Hackerman

+0

오, 좋은, 그리고 내 아약스 전화에 토큰을 보내려면 어떻게합니까? –

+0

내 대답을 확인하십시오 :) – Hackerman

답변

1

당신은 당신의 ajax 전화에 AntiForgeryToken 누락되었습니다. 그래서 전화는 :

$.ajax({ 
     url: '@Url.Action("Create", "Employees")', 
     data: { employee: null, monStart: monStart}, 
     type: 'POST', 
     success: function (data) { 
     }, 
     error: function (xhr, status, error) { 
      alert(xhr.responseText); 
     } 
}); 

은해야합니다 사용하고 있기 때문이다

var myToken = $('[name=__RequestVerificationToken]').val(); 

$.ajax({ 
     url: '@Url.Action("Create", "Employees")', 
     data: { employee: null, monStart: monStart, __RequestVerificationToken : myToken }, 
     type: 'POST', 
     success: function (data) { 
     }, 
     error: function (xhr, status, error) { 
      alert(xhr.responseText); 
     } 
    }); 
+0

덕분에 내가 이것을 시도합니다 –

+0

흠 값은 여전히 ​​null입니다, 당신은 아마도 jquery 플러그인 문제와 관련이있을 것이라고 생각합니까? –

+0

그리고'DateTime? monStart'는'string monStart'와 같은 문자열을 사용합니다 ... 또한 중단 점을 사용하여 메소드 – Hackerman

관련 문제