【问题标题】:How do I change value of a model using JQuery?如何使用 JQuery 更改模型的值?
【发布时间】:2017-10-27 17:58:15
【问题描述】:

我正在使用 Asp.Net MVC 并且我有一个模型,其中有一个属性 status 并且在form 中有 2 个 input type =" submit " 来提交 form,它们是:save and postsave。我想当我点击按钮save and postchangestatus属性值为1,当用户点击按钮savechangestatus值为0时。

为此,我尝试使用 JQuery 获取 inputid 并更改 status 属性,但仍然无法做到。

我怎么能这样做?

html

<input type="submit" class="btn btn-success" value="Save Post" id="savePost"/>
<input type="submit" class="btn btn-success" value="Save" id="save" />

jquery

$(document).ready(function () {
    $('#addPropriedade').submit(function () {        
        var dados = new FormData($('#addPropriedade').get(0));

        $('#savePost').click(function () {
            dados.status = 1;
            console.log(dados.status);
        });
        $('#save').click(function () {
            dados.status = 0;
            console.log(dados.status);
        });


        $("#errorMessage").hide();

        var loading = $("#div_loading");
        $(document).ajaxStart(function () {
            loading.show();
        });
        $(document).ajaxStop(function () {
            loading.hide();
        });

        $.ajax({
            accepts: { json: 'application/json' },
            dataType: 'json',
            type: "POST",
            url: "/Propriedade/addAjax",
            data: dados,
            processData: false,
            contentType: false,
            success: function (data) {
                var status = data["status"];
                var msg = data["msg"];
                if (status === "1") {
                    $('#addPropriedade').trigger("reset");
                    $("#errorMessage").html(msg);
                    $("#errorMessage").prop("class", "alert-success");
                    //window.location.replace("/Empresa/view");                    
                } else {
                    $("#errorMessage").html(msg);
                    $("#errorMessage").prop("class", "alert-danger");
                }
                $("#errorMessage").show()
            },
            error: function (xhr, status) {
                $("#errorMessage").html("Erro tentando cadastrar");
                $("#errorMessage").prop("class", "alert-danger");
                $("#errorMessage").show()
            }
        });

        return false;
    });
});

【问题讨论】:

  • 你的点击功能被触发了吗?当你点击保存和发布按钮时?

标签: jquery asp.net-mvc


【解决方案1】:

   $(document).ready(function () {
$('#addPropriedade').submit(function () {        


    $('#savePost').click(function () {
    var dados = new FormData($('#addPropriedade').get(0));
        dados.status = 1;
        console.log(dados.status);
    });
    $('#save').click(function () {
    var dados = new FormData($('#addPropriedade').get(0));
        dados.status = 0;
        console.log(dados.status);
    });


    $("#errorMessage").hide();

    var loading = $("#div_loading");
    $(document).ajaxStart(function () {
        loading.show();
    });
    $(document).ajaxStop(function () {
        loading.hide();
    });

    $.ajax({
        accepts: { json: 'application/json' },
        dataType: 'json',
        type: "POST",
        url: "/Propriedade/addAjax",
        data: dados,
        processData: false,
        contentType: false,
        success: function (data) {
            var status = data["status"];
            var msg = data["msg"];
            if (status === "1") {
                $('#addPropriedade').trigger("reset");
                $("#errorMessage").html(msg);
                $("#errorMessage").prop("class", "alert-success");
                //window.location.replace("/Empresa/view");                    
            } else {
                $("#errorMessage").html(msg);
                $("#errorMessage").prop("class", "alert-danger");
            }
            $("#errorMessage").show()
        },
        error: function (xhr, status) {
            $("#errorMessage").html("Erro tentando cadastrar");
            $("#errorMessage").prop("class", "alert-danger");
            $("#errorMessage").show()
        }
    });

    return false;
});

});

【讨论】:

  • 它不会改变FormData的值,看看我的JQuery脚本,我用的是FormData
  • 你想做什么?当用户单击保存按钮时,您正在尝试同时发布表单数据,您需要将状态设置为 0 正确吗?
  • 是的,FormData 作为Model 发送到控制器。 statusModel的一个属性,你懂吗?
  • 需要在click函数内部整合表单数据。我已经更新了我的答案
【解决方案2】:

嗨,我认为简单的解决方案是,如果您在模型强类型化的同一个 cshtml 文件中使用 jquery。

然后就可以直接使用@字符访问模型对象了。

示例:

var status = '@model.status'

然后你可以分配任何你想要的值。

所有其他类型的详细示例在以下链接中进行了很好的解释:

https://stackoverflow.com/a/41312348/3397630

希望对您有所帮助,请让我知道您的想法或反馈

谢谢

卡提克

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-17
    • 2017-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-24
    • 1970-01-01
    • 2021-07-10
    相关资源
    最近更新 更多