【问题标题】:ASP.NET MVC Set property of model during form sendASP.NET MVC 在表单发送期间设置模型的属性
【发布时间】:2017-10-02 11:47:07
【问题描述】:

我在 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>

我想为模型属性之一设置不同的参数。我尝试使用以下方式进行操作:

<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>

但什么也没发生,这些函数根本没有被调用,表单正在发送,状态属性为空。为什么?

【问题讨论】:

  • 您的选择器不正确 - $('#btnSave')$('#btnSend')(前导 # 使用 id 属性标识元素)
  • 还要注意if ($(this).valid()) 没有意义($(this) 是提交按钮,而不是表单)

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


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    您的 JQuery id 选择器之前还缺少一个“#”,例如应该是'#btnSave'。

    【讨论】:

    • 这是错误的。它可能会“解决”问题,但它通过破坏具有实​​际提交按钮的默认功能来实现。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    • 1970-01-01
    • 2014-07-21
    • 2013-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多