如何通过Javascript回发到MVC控制器操作

时间:2011-07-11 14:11:27

标签: asp.net vb.net asp.net-mvc-3

目前我有一个aspx页面,定义为:

    <%Using Html.BeginForm("SaveNotifications", "Notifications", FormMethod.Post, New With {.id = "NotificationForm"})%>
    ...
                    <tr>
                <td colspan="3">
                    <input type="submit" id="SaveNotifications" name="SaveNotifications" value="Save" class="t-button" />
                </td>
            </tr>
        </table>
        </fieldset> 
    <%End Using %>

我想更改此设置,以便我的输入按钮触发javascript函数,以便我可以对表单进行一些复杂的验证,然后发送到控制器。

我将提交按钮更改为:

    <input type="submit" id="SaveNotifications" name="SaveNotifications" value="Save" class="t-button" onclick="onSave(); return false;" />

onSave()方法会触发但不会回发给控制器。

控制器定义为:

    <HttpPost()> _
    <MultiButton(MatchFormKey:="SaveNotifications", MatchFormValue:="Save")> _
    Function SaveNotifications(ByVal NotificationForm As FormCollection) As ActionResult
    ...
    End Function

如何更改此内容以便javascript触发,运行我的验证然后点击此控制器操作?

由于

1 个答案:

答案 0 :(得分:1)

将提交按钮更改为

<input type="submit" id="SaveNotifications" name="SaveNotifications" value="Save" class="t-button" onclick="return onSave();" />

然后在javascript onSave()函数中,根据验证返回true或false。

function onSave()
{
    var isValid = true;
    // ... do your validation ...

    // ie:
    // if (field1.value.length == 0)
    //     isValid = false;


    // returning true will post the form.  False will halt it.
    return isValid;
}