Пост с MVC 2, включая значения за пределами формы - PullRequest
0 голосов
/ 29 сентября 2010

Я довольно новичок в MVC 2, и у меня возникают проблемы с выяснением того, как разместить значения, которые находятся вне формы.

Это мой код очень упрощенный:

<input type="text" id="TextboxOutsideForm"/>    
<% using (Html.BeginForm("Edit", "Home", FormMethod.Post)) {%>
    <%: Html.ValidationSummary(true) %>
      <%: Html.TextBoxFor(model => model.Stuff) %>
         <input type="submit" value="Save" />
<% } %>

TextboxOutsideForm может быть изменен пользователем, и при нажатии кнопки сохранения я хочу включить значение из этого элемента управления в действие в контроллере. Также было бы здорово, если бы я мог использовать привязку модели одновременно. Это было бы здорово:

[HttpPost]
public ActionResult Edit(int id, Model model, string valueFromTextbox)

Или просто FormCollection и значение .. Я знаю, что в этом упрощенном примере я мог бы просто поместить текстовое поле внутри формы, но в реальной жизни элемент управления является сторонним и создает множество других вещей, поэтому мне просто нужно получить значение с помощью jquery и опубликовать его ..

Возможно ли это?

Спасибо

Ответы [ 2 ]

2 голосов
/ 29 сентября 2010

Вы можете взглянуть на этот вопрос, который объясняет, как динамически создавать форму и отправлять ее. Вы можете быстро добавить событие отправки и динамически добавить значение в форму

$(function() {
    $('form').submit(function() {
        $(this).append($("#ValueOutsideForm"));
        return true;
    });
});

Таким образом, вам не нужно полагаться на AJAX, и вы можете публиковать свою форму синхронно.

1 голос
/ 29 сентября 2010

Если вы используете обычную форму публикации, только входы внутри формы будут отправлены на сервер.Чтобы достичь того, что вы ищете, вам нужно будет отправить форму, используя AJAX.Пример:

$(function() {
    $('form').submit(function() {
        $.ajax{
            url: this.action,
            type: this.method,
            data: $(this).clone().append($('#TextboxOutsideForm').clone()).serialize(),
            success: function(result) {
                alert('form successfully posted');
            }
        });
        return false;
    });
});

Также не забудьте дать имя полю ввода, которое находится вне формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...