2015-03-19 6 views
0

Я хочу отправить значение моего DropDownListБритвы просмотра отправить выпадающее значение с помощью AJAX

 @Html.DropDownListFor(model => model.selection, Model.liste_selection, new {@id="Selection", @class = "form-control" }) 

с этим АЯКСОМ постом

<script> 
$('#valider').on("click",function() { 


    $.ajax({ 
     url: '@Url.Action("Executer", "Requete")', 
     type: "POST", 
     data: { id: $('#Selection').val() }, 
     success: function (result) { 
      $('#ajaxDisplay').html(result); 
     } 
    }); 

}); 

Но ценностью моего списка doenst достигнет контроллер он уходит null

Это мой контроллер

[HttpPost] 
    public ActionResult Executer(RequeteOptimise ro, string Command) 
    { 

     Session["dateDebutReq"] = ro.begin.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture); 
     Session["dateFinReq"] = ro.end.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture); 
     if (ro.selection.Contains("Tous")) 
     { 
      var viewModel = new RequeteOptimise 
      { 
       nombre = rr.callReqCount(ro) 
      }; 

      return PartialView("../utilities/Nombre", viewModel); 
     } 
+1

Можем ли мы видеть объявление вашего контроллера, куда вы отправляете сообщение? –

+1

Вы не ссылаетесь на ключ 'id' в вашем контроллере. – Jai

+0

Это было!, Может, скажите, как отправить целую модель на контроллер вместо одного значения? – Redadublex

ответ

1

Попробуйте сделать некоторые изменения в вашем AJAX, как показано ниже

$('#valider').on("click",function() { 
    var info={ 
       id:$('#Selection option:selected').text(); 
      }; 
    $.ajax({ 
     url: '@Url.Action("Executer", "Requete")', 
     type: "POST", 
     data: JSON.stringify(info), 
     success: function (result) { 
      $('#ajaxDisplay').html(result); 
     } 
    }); 

}); 

Позвольте мне знать, если вы сталкиваетесь с какой-либо проблемы?

EDIT - Если предположить, что модель содержит 2 строки и 2 DATETIME поля я отредактирует Jsondata, как показано ниже:

$('#valider').on("click",function() { 
var date1=$('#date1ID').val(); 
var date2=$('#date2ID').val(); 
var model={ 
      string1: $('#string1ID').val(), 
      string2: $('#string2ID').val(), 
      date1: new Date(date1), 
      date2: new Date(date2) 
      }; 

$.ajax({ 
      url: '@Url.Action("Executer", "Requete")', 
      type: "POST", 
      data: JSON.stringify(model), 
      success: function (result) { 
       $('#ajaxDisplay').html(result); 
      } 
     }); 
}); 

EDIT:$('#string1ID').val() - здесь string1ID это идентификатор из любой управления, откуда вы извлекаете значение. То же упаковывают string2ID, date1ID и date2ID

Просто проверьте, если вы получаете какие-либо значения в вас модели параметр метода контроллера

EDIT 2 - Ну, если вы хотите передать значение модели один за другим, что сказанный способ будет работать точно, но если вы хотите передать всю форму к контроллеру через Ajax вы можете изменить его, как показано ниже:

$('#valider').on("click",function (e) { 
    e.preventDefault(); 
    var form=$("#formID"); 
    $.ajax({ 
     url: '@Url.Action("Executer", "Requete")', 
     type: "POST", 
     data: form.serialize(), 
     success: function (result) { 
      $('#ajaxDisplay').html(result); 
     } 
    }); 
}); 

для более подробной информации о сериализации в форме, которую я предлагаю вам пройти через this link

+0

Есть ли способ отправить всю модель, в приведенном выше комментарии они предложили использовать данные: $ ('form'). Serialize(), потому что у меня много полей. – Redadublex

+0

Работаем над этим. Дайте мне когда-нибудь., –

+0

@Redadublex .. Отредактировал мой ответ. Пожалуйста, проверьте и дайте мне знать, если есть какие-либо сомнения. –

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