【发布时间】:2014-02-03 15:35:31
【问题描述】:
也许这是一个愚蠢的问题,但我还没有发现...。
我在 MVC 中有一个带有 Ajax.BeginForm 的视图。该模型具有属性值(字符串)。这是视图的一部分:
@using (Ajax.BeginForm("Edit", "TheController", new AjaxOptions {
UpdateTargetId = "Target",
InsertionMode = InsertionMode.Replace,
LoadingElementId = "loader",
OnBegin = "SetValues()"
})) {
@Html.HiddenFor(x => x.Value)
<label>A label</label>
<input type="text" id="anInt"/>
<select id="aMeasurement">
<option value="px">PX</option>
<option value="%">%</option>
<option value="em">em</option>
</select>
<input type="submit" id="submitButton" value="Submit it"/>
}
函数SetValues:
function SetValues(){
$("#Value").val($("#anInt").val() + $("#aMeasurement").val())
}
这应该设置,例如,隐藏字段“值”中的 100px。
提交论坛时,我希望字段“Value”成为 anInt 和 aMeasurement 的组合,但事实并非如此。我使用 Chrome,当我检查元素时,我看到隐藏元素“值”中设置了正确的值,但是当我调试控制器时,值是空的。
当我调试 JS 时,我看到调用了函数 SetValues,并且我还看到在 Value-element 中设置了正确的值。 JS 函数完成后,Visual Studio 在控制器中正确方法上的断点处中断。
我似乎无法弄清楚为什么这不起作用。或者我处理这个问题的方式不对。
有人知道怎么做或者有更好的主意吗?
更新
感谢 ryanulit 和 Scott MacMaster,我想出了这个:
我在表单中添加了一个 ID 并添加了这个小 JS 脚本:
$(function(){
$("ID_OR_NAME_FORM").submit(function () {
... Do stuff
});
});
一旦表单被提交(并且在向控制器发送数据之前),Javascript 中的提交函数就会被调用。这将为我设置正确的值,然后将数据发布到控制器。
【问题讨论】:
-
你试过没有“()”的 OnBegin = "SetValues" 吗?
-
是的,但结果相同。顺便调用了Javascript函数(原帖更新)
标签: javascript asp.net-mvc-4 ajax.beginform