2013-05-02 3 views
0

Я получаю данные формы в формате JSON строки Format, но не смог связать его с моделью объектаКак конвертировать/Получить данные формы в формате 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); 
     } 

Пожалуйста, пройти через мой код attempt..I Jquery я получаю нулевое значение в контроллер параметра метода, т.е. на leadViewModel..Please помочь мне .. !!!

ответ

0

Просто передайте сериализованные данные без создания Parameters. Привязка модели сопоставляет значения формы с объектом LeadViewModel для метода контроллера.

+0

Я получаю строку, а не объект LeadViewModel, разделенный символом «&» при передаче сериализованных данных. – 2013-05-02 08:37:15

+0

Также, если я использую serializedObject(), я получаю », то есть пустое значение вместо нуля ... Я не получаю значение, введенное в текстовое поле на родительской странице. – 2013-05-02 08:57:26

+0

Вероятно, это связано с вызовом stringify, но в конечном итоге, если вы передаете данные с помощью строки запроса, которую вы получите, значения, разделенные амперсандами. Я предполагаю, что вы передаете это через заголовки, так что удалите stringify, и у вас должен быть правильный объект JSON для передачи вашего запроса ajax. –

Смежные вопросы