Javascript Ajax.BeginForm onBegin不设置值

Javascript Ajax.BeginForm onBegin不设置值,javascript,asp.net-mvc-4,ajax.beginform,Javascript,Asp.net Mvc 4,Ajax.beginform,也许这是个愚蠢的问题,但我还没发现。。。然而 我在MVC中有一个带有Ajax.BeginForm的视图。模型具有属性值(字符串)。这是视图的一部分: @using (Ajax.BeginForm("Edit", "TheController", new AjaxOptions { UpdateTargetId = "Target", InsertionMode = InsertionMode.Replace, LoadingElementId = "loader",

也许这是个愚蠢的问题,但我还没发现。。。然而

我在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"/>
}
例如,应在hiddenfield“Value”中设置100px

在提交论坛时,我希望“值”字段成为ANIT和AME度量的组合,但事实并非如此。我使用Chrome,当我检查元素时,我看到隐藏元素“value”中设置的正确值,但当我调试控制器时,该值为空

调试JS时,我看到调用了函数SetValues,并且在value元素中设置了正确的值。JS函数完成后,visualstudio会在控制器中的正确方法上断开断点

我似乎不明白为什么这不起作用。也许我处理这件事的方式不对

有人知道怎么做或者有更好的主意吗

更新

多亏了ryanulit和Scott MacMaster,我想出了这个:

我在表单中添加了一个ID,并添加了这个小JS脚本:

$(function(){
    $("ID_OR_NAME_FORM").submit(function () {
        ... Do stuff
    });
});
一旦表单被提交(并且在向控制器发送数据之前),Javascript中的submit函数就会被调用。这将为我设置正确的值,然后将数据发布到控制器。

我想你是这个意思

function SetValues(){
    $("#Value").val($("#anInt").val() + $("#aMeasurement").val())
}

我对此问题的解决方案非常简单:

$("#Form_Id_You_Have_To_Change").on("submit", function () { SetValues(); });

是的,但这只是一个例子。发布完整的代码会把人吓跑:)。我改变了原来的POST,我通常使用jquery而不是ajax扩展。但是,OnBegin()的文档说明“获取或设置要在页面更新之前立即调用的JavaScript函数的名称”。这并不清楚,因为这并没有说明这是否发生在发布之前或之后。可能不使用OnBegin,而是将“onclick='return SetValues();'”添加到submit控件中。您还可以在函数中输入“alert('Hi');”以查看何时调用它。或者使用“调试器;”来调用调试器,如果你觉得更可取的话。我也是这么想的。这方面的文档不是。。。很好。这可能是双向的。不管怎样,我会先试试你的想法,然后告诉你。我个人喜欢坚持使用ajax扩展,但如果没有其他wat来实现这一点……正如@ScottMacMaster所说,AjaxOptions类不允许任何方法在提交之前更新值。您将需要绑定到submit按钮的onclick事件,或者绑定到form submit事件并更改其中的值。这里有一些例子可以帮助你:谢谢大家。看我原来的帖子。我已经在那里添加了解决方案。使用Ajax表单和一些小的Javascript添加,它现在似乎可以正常工作。您是否尝试过在没有“()”的情况下使用OnBegin=“SetValues”?是的,但结果相同。Javascript函数被顺便调用(在原始帖子中更新)
$("#Form_Id_You_Have_To_Change").on("submit", function () { SetValues(); });