ASP.NET MVC在表单发送过程中设置模型的属性

时间:2017-10-02 11:47:07

标签: javascript c# jquery asp.net-mvc asp.net-mvc-4

我在ASP.NET MVC表单上有2个提交按钮:

@using (Html.BeginForm("ApplicationDriverForm", "ApplicationDriver", routeValues: new { CompanyUniqueString = Model.CompanyUniqueString }, method: FormMethod.Post, htmlAttributes: new { id="appForm1", name="appForm1" }))
{

    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit" name="btnSave" id="btnSave" value="Save - but don't send" class="btn btn-default" />
        </div>
    </div>
    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit" name="btnSend" id="btnSend" value="Send" class="btn btn-default" />
        </div>
    </div>

我想为其中一个model属性设置不同的参数。我尝试使用以下方式执行此操作:

<script type="text/javascript">
    jQuery(document).ready(function () {
        $('btnSave').on('click', function () {
            ev.preventDefault();
            $('input[id=@Html.IdFor(model=>model.Status)]').val('@Domain.StaticStrings.ApplicationDriverStatusStrings.Processing');
            if ($(this).valid())
                $('#appForm1').submit();
        });

        $('btnSend').on('click', function () {
            ev.preventDefault();
            $('input[id=@Html.IdFor(model=>model.Status)]').val('@Domain.StaticStrings.ApplicationDriverStatusStrings.Submit');
            if ($(this).valid())
                $('#appForm1').submit();
        });
    });
</script>

但没有任何反应,这些函数根本没有调用,表单是发送空状态属性。为什么呢?

2 个答案:

答案 0 :(得分:1)

您正在调用ev.preventDefault(),但ev未定义,因为您的处理函数不会将事件作为参数。将其更改为:

$('btnSave').on('click', function (ev) {

$('btnSend').on('click', function (ev) {

答案 1 :(得分:-1)

如果您希望阻止表单提交,请先将输入类型更改为button而不是submit,然后再提交。

你也错过了一个&#39;#&#39;在您的JQuery id选择器之前,例如应该是&#39; #btnSave&#39;。