我有一个包含表格的mvc 3剃刀视图。在该表单上,我有一个输入字段,每次在下拉列表中进行新选择时(通过对控制器的ajax请求),其值都会更改。这是有效的,页面上的输入会按预期更新。
然而,当使用Firebug查看表单时,我可以看到html中的基础输入值字段不会改变。因此,当我提交表单时,该字段的值是原始值。
这是我的文本框和jQuery函数,它在下拉列表更改事件中被调用:
function updatePageSizeValues() {
var pageSizeId = $jq("#ddlPageSize").val();
$jq.getJSON("/Templates/GetPageSizeByPageSizeId/" + pageSizeId, null, updateFields);
};
updateFields = function (data) {
$jq("#PaperHeight").val(data.Height);
$jq("#PaperWidth").val(data.Width);
};
@Html.TextBoxFor(t => t.PaperHeight) @Html.TextBoxFor(t => t.PaperWidth)
我在这里和更广泛的网络上看了很多文章,仍然无法让这个工作。对此有任何想法将非常感激。提前谢谢。
答案 0 :(得分:1)
在jQuery中执行$(myInput).val(value)时,它会修改dom中input元素的基础属性值。 因此,当您提交时,它应该是传递的新值。 尝试查看按Submit时发送的HttpRequest。
在我看来,问题所在的是服务器端。您确定在读取实际发送的值之前没有执行绑定吗? (我真的不知道asp.net MVc是如何工作的。)
答案 1 :(得分:0)
你的代码看起来很好,所以这只是一个猜测,但是从服务器返回的JSON格式不正确,这可能导致静默失败。
尝试运行上面的.get而不是.getJSON,看看Firebug中的XMLHttpRequest,或者只是添加一个console.log(数据);命令你的updateFields函数进行调查。
答案 2 :(得分:0)
对于遇到此问题的其他人,我终于找到了答案。 Firebug中的一个错误是阻止DOM更新(See this StackOverflow question)我测试了Chrome中的功能并且运行正常。然后我关闭了Firebug,然后在Firefox中工作。
也感谢那些帮助我提出建议的人。