2013-05-02 2 views
0

나는 모델 개체로에게 를 결합하는 JSON 문자열 형식하지만없는에서 양식 데이터를 얻고 JSON 개체에 양식 데이터 가져 오기변환하는 방법/

내보기 :

  <div class="GenderaMale float_lt"> 
      </div> 
      <div class="float_lt">@Html.RadioButtonFor(m => m.PersonalDetails.BasicDetails.Gender, "male", new { @style = "margin:10px;margin-top:15px;", id = "malegender" }) 
      </div> 
      <div class="GenderaFemale float_lt" style="margin-left: 30px;"> 
      </div> 
      <div class="float_lt">@Html.RadioButtonFor(m => m.PersonalDetails.BasicDetails.Gender, "Female", new { @style = "margin:10px;margin-top:15px;", id = "femalegender" }) 
      </div> 
      <span class="float_lt" style="margin-right: 15px; 
      margin-top: 5px;">Amount</span> 
      <div class="rupee" style="float: left"> 
      </div> 
      @Html.TextBoxFor(m => m.Amount, new { @class = "trackwidthtxt float_lt" }) 

<script type="text/javascript"> 

     $.fn.serializeObject = function() { 
      var o = {}; 
      var a = this.serializeArray(); 
      $.each(a, function() { 
       if (o[this.name] !== undefined) { 
        if (!o[this.name].push) { 
         o[this.name] = [o[this.name]]; 
        } 
        o[this.name].push(this.value || ''); 
       } else { 
        o[this.name] = this.value || ''; 
       } 
      }); 
      return o; 
     }; 

     $("#calculateNow").click(function() { 

      var viewmodel = $('#CalculateNowForm').serializeObject(); 
      alert(viewmodel); 

      var data = JSON.stringify($('form').serializeObject()) 
      alert(data); 
      var Parameters = '{"leadViewModel":' + data + '}'; 
      alert(Parameters); 
      Events.OpenPopup(ApplicationRoot + '/Calculator/CalculateNow', '', 600, 750, "middle", "#E7F0F5", Parameters); 

     }); 

    </script> 

public partial class LeadViewModel 
{ 
    public string Amount{ get; set; } 
    public PersonalDetailsViewModel PersonalDetails{ get; set; } 
} 

public partial class PersonalDetailsViewModel 
{ 
    public BasicDetailsViewModel BasicDetails{ get; set; } 
} 
public partial class BasicDetailsViewModel 
{ 
    public string Gender{ get; set; } 
} 
: 여기

내 모델입니다

여기 내 컨트롤러입니다 :

[HttpPost] 
     public ActionResult CalculateNow(LeadViewModel leadViewModel) 
     { 
      LeadViewModel leadmodel = leadViewModel; 
      return PartialView("ConfirmToCalculate",leadmodel); 
     } 

친절 즉 leadViewModel..Please에 나를 도와 컨트롤러 메소드의 매개 변수에 null 값을 얻고 내 jQuery 코드의 attempt..I 통과 ..!

답변

0

Parameters을 만들지 않고 직렬화 된 데이터를 전달하십시오. 모델 바인딩은 양식 메서드 값을 컨트롤러 메서드의 LeadViewModel 개체에 매핑합니다.

+0

직렬화 된 데이터를 전달할 때 LeadViewModel 객체가 '&'로 구분되어 있습니다. –

+0

또한 serializedObject()를 사용하는 경우 null이 아닌 빈 값을 가져옵니다. 상위 페이지의 텍스트 상자에 입력 된 값 –

+0

아마도 stringify 호출과 관련이 있지만 궁극적으로는 쿼리 문자열을 통해 데이터를 전달하는 경우 - 앰퍼샌드로 구분 된 값 - 얻을 수 있습니다. 헤더를 통해 이것을 전달한다고 상상해보십시오. stringify를 제거하면 AJAX 요청에 전달할 적절한 JSON 객체가 있어야합니다. –

관련 문제