2014-01-25 2 views
0

Как я могу передать коллекцию форм контроллеру с jquery или ajax при изменении для выпадающего списка?Pass FormCollection для контроллера с ajax

Могу ли я вызвать действие в своем контроллере и передать его в мою форму, если я не использую кнопку отправки?

@using (Html.BeginForm("Create","Order", FormMethod.Post, new {@class = "form-horizontal", @name="forma"})) { 
        @Html.ValidationSummary(true) 

        @Html.Partial("_CreateOrEdit", Model) 


        <div class="form-actions no-margin-bottom"> 
         <input type="submit" [email protected]("String_Save") class="btn btn-primary" > 
          <a href="@Url.Action("Index", "Order")" class="btn btn-primary">@Html.LocalizeString("String_BackToList")</a> 
        </div> 
       } 

и часть того, что парциальное есть (он имеет много больше полей, но я думаю, что они не имеют значения для вопроса)

<div class="control-group"> 
<div class="control-label"> 
     @Html.LocalizedLabelFor(model => model.BuyerId) 
</div> 

<div class="controls"> 
@Html.DropDownListFor(model => model.BuyerId, ((IEnumerable<SalesAgent.Core.Entities.Buyer>)ViewBag.PossibleBuyers).Select(option => new SelectListItem 
{ 
    Text = (option == null ? "None" : option.Name), 
    Value = option.Id.ToString(), 
    Selected = (Model != null) && (option.Id == Model.BuyerId) 
}), @Html.LocalizeString("String_Choose"),new {@class="searchable" }) 
@Html.ValidationMessageFor(model => model.BuyerId) 

, когда я изменить выпадающий список, я хочу вызовите действие с моего контроллера и передайте ему текущие данные формы. Как мне это сделать?

+0

Укажите код – vmg

+0

Этого должно быть достаточно кода :) – Medo

ответ

1
var input = $(':input'); 
    $.ajax({ 
     type: "POST", 
     data: input, 
     url: "URL", 
     success: function (items) { 
      //TODO 
     } 
    }); 

В контроллере я возвращаю его в FormCollection, а затем я могу делать то, что мне нужно, с данными формы.

0

Я думаю, как это ...

$("#BuyerId").change(function() { 
var model = { 
    // name of model member : value of model member 
    // BuyerId : $("#BuyerId").val(), 
    // ....your form data :))) 
} 
$.ajax({ 
    url : //your method of controller url, 
    type: "POST", 
    data: {model : model} // name of model object what send to your controller 
}); 

});

+0

И как его поймать в контроллере? Какой тип «модель»? – Medo

+0

Вы можете «поймать» его в параметре вашего метода контроллера. Модель в js-скрипте - это объект js, который автоматически сериализуется в объекте вашей модели в методе контроллера, публикуя в нем js-модель ... – Vasily

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