Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > MVC: Передать форму в контроллер через post


Автор: Competitor 28.9.2011, 11:36
Всем привет,
На странице есть форма для конкретной модели. Все поля формы смаплены на модель. И если сделать форме сабмит, то полностью заполненная модель придет в метод контроллера.
Но мне теперь нужно отправлять форму не через сабмит, а через jquery метод post. Как мне это сделать?
я пока пробовал так:
Код

var form = $('#myTestForm');
var srlzdform = form.serialize();
$.post("myTestUrl", {
    myTestModel: srlzdform
}).success(function (data) {
    alert(data);
});

Однако, в методе контроллера получаю null в параметре myTestModel.

Вот примерно как выглядит код формы:
Код

@model MyTestModel
@using (Html.BeginForm("Method1", "Controller1", FormMethod.Post, new {id = "myTestForm"})) {
    <div st yle="max-width:600px;">        
        <div>@Html.ValidationMessageFor(model => model.Name)</div>
        <div>@Html.ValidationMessageFor(model => model.Address)</div>
    </div>   
    <div>Имя*</div>
    <div>
        <input data-val="true" data-val-required="Необходимо заполнить поле" id="Name" type="text" class="param-input" name="Name" value="@(Model.Name)" />
    </div>
        
    <div>Адрес*</div>
    <div>
        <input data-val="true" data-val-required="Необходимо заполнить поле" id="Address" type="text" class="param-input" name="Address" value="@(Model.Address)" />
    </div>
}

Автор: DonLino 22.11.2011, 00:01
Цитата(Competitor @ 28.9.2011,  11:36)
Всем привет,
На странице есть форма для конкретной модели. Все поля формы смаплены на модель. И если сделать форме сабмит, то полностью заполненная модель придет в метод контроллера.
Но мне теперь нужно отправлять форму не через сабмит, а через jquery метод post. Как мне это сделать?
я пока пробовал так:
Код

var form = $('#myTestForm');
var srlzdform = form.serialize();
$.post("myTestUrl", {
    myTestModel: srlzdform
}).success(function (data) {
    alert(data);
});

Однако, в методе контроллера получаю null в параметре myTestModel.

Вот примерно как выглядит код формы:
Код

@model MyTestModel
@using (Html.BeginForm("Method1", "Controller1", FormMethod.Post, new {id = "myTestForm"})) {
    <div st yle="max-width:600px;">        
        <div>@Html.ValidationMessageFor(model => model.Name)</div>
        <div>@Html.ValidationMessageFor(model => model.Address)</div>
    </div>   
    <div>Имя*</div>
    <div>
        <input data-val="true" data-val-required="Необходимо заполнить поле" id="Name" type="text" class="param-input" name="Name" value="@(Model.Name)" />
    </div>
        
    <div>Адрес*</div>
    <div>
        <input data-val="true" data-val-required="Необходимо заполнить поле" id="Address" type="text" class="param-input" name="Address" value="@(Model.Address)" />
    </div>
}

А чем такой вариант не подходит

Код

<% using (Ajax.BeginForm(
        "Action",
        "Control",
        new AjaxOptions
        {
            HttpMethod = "post",
           OnComplete = "ClearForm()",
            InsertionMode = InsertionMode.Replace
        }))
       {%>
    <input type="text" name="name" />
    <input type="submit" name="submit" value="submit" />
    <% } %>


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)