使用MVC 2发布,包括表单之外的值

时间:2010-09-29 10:47:54

标签: asp.net-mvc-2

我对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可以由用户更改,当按下save时,我想将此控件的值包含到控制器中的操作中。如果我可以同时使用模型绑定也会很棒。 这会很棒:

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

或者只是一个FormCollection和一个值.. 我知道在这个简化的例子中我可以把文本框放在表单中,但在现实生活中控件是第三方并且正在创建大量其他东西,所以我只需要用jquery抓取值并发布它..

这可能吗?

由于

2 个答案:

答案 0 :(得分:1)

如果您使用普通表单帖子,则只有表单内的输入才会被发送到服务器。要实现您的目标,您需要使用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;
    });
});

另外,不要忘记为表单外的输入字段命名。

答案 1 :(得分:1)

您可以查看this问题,该问题解释了如何动态创建表单并提交表单。您可以高举提交事件并动态地将值添加到表单中

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

这样你就不必依赖ajax了,你可以同步发布你的形式。