我对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抓取值并发布它..
这可能吗?
由于
答案 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了,你可以同步发布你的形式。