当我使用
$("#FormEthernet").submit();
表单已发布,在我的 Controller 中点击了操作,但没有传递任何数据,所有输入均为空。
(参数字典包含一个空条目...)
这是我的表格
@using (Html.BeginForm("MyAction", "MyController",FormMethod.Post, new { id = "FormEthernet",name="FormEthernet" }))
{
<div id="dialog-formEthernet" title="Update Ethernet Config">
<p class="validateTips">
All form fields are required.</p>
<fieldset>
<div>
Phone Number</div>
<div>
<input type="text" name="TNEthernet" id="TNEthernet" />
</div>
<div>
Up</div>
<div>
<input type="text" name="Up" id="Up" /></div>
<div>
Down</div>
<div>
<input type="text" name="Down" id="Down" /></div>
</fieldset>
</div>
}
有什么想法吗? JQUERY 错误?
更新 这是我的 Controller
[HttpPost]
public ActionResult MyAction(string TNEthernet,string Up, string Down)
{
return RedirectToAction("MyOtherAction", new { id = TNEthernet });
}
还有一些 Fiddler(已发送)
POST http://localhost:4814/MyController/MyAction HTTP/1.1
Host: localhost:4814
Connection: keep-alive
Content-Length: 0
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Origin: http://localhost:4814
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: http://localhost:4814/MyController/MyOtherAction/11255
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Cookie: .ASPXAUTH=C20491A7FB3B40E5761.......E2EE4291A5D
这里是我的提交:
$("#dialog-formEthernet").dialog({
autoOpen: false,
height: 300,
width: 350,
modal: true,
buttons: {
"Set Configuration": function () {
var bValid = true;
allFields.removeClass("ui-state-error");
bValid = bValid && ensureTN(TNEthernet);
//up and down
bValid = bValid && checkRegexp(UP, /^\d+$/, "Upload");
bValid = bValid && checkRegexp(DOWN, /^\d+$/, "Download");
if (bValid) {
alert($("#Up").val()); //this works
$("#FormEthernet").submit();
}
},
Cancel: function () {
$(this).dialog("close");
}
},
close: function () {
allFields.val("").removeClass("ui-state-error");
}
});
我的 HTML 源代码
<form action="/MyController/MyAction" id="FormEthernet" method="post" name="FormEthernet"><div id="dialog-formEthernet" title="Update Ethernet Config">
<p class="validateTips">
All form fields are required.</p>
<fieldset>
<div>
Phone Number</div>
<div>
<input type="text" name="TNEthernet" id="TNEthernet" />
</div>
<div>
Up</div>
<div>
<input type="text" name="Up" id="Up" /></div>
<div>
Down</div>
<div>
<input type="text" name="Down" id="Down" /></div>
<input id="FOO" name="FOO" type="text" value="FOO!" />
<input type="submit" />
</fieldset>
</div>
</form>
最佳答案
在 .submit()
之前添加了这个
$("#dialog-formEthernet").parent().appendTo($("#FormEthernet"));
解决了!
看这里:
jQuery UI Dialog with ASP.NET button postback
引用“Chad Rupper” : 主要是因为 jquery 使用 DOM 将对话框移到了 Form 标签之外。将它移回表单标签内,它应该可以正常工作。您可以通过检查 Firefox 中的元素来查看这一点。
代码:罗伯特·麦克莱恩
请原谅我让你们都激动了一点!
关于c# - Jquery 提交不向 Controller 发布值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17049067/