如何使用 JQuery 更改模型的值?

Posted

技术标签:

【中文标题】如何使用 JQuery 更改模型的值?【英文标题】:How do I change value of a model using 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;
    );
);

【问题讨论】:

你的点击功能被触发了吗?当你点击保存和发布按钮时? 【参考方案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://***.com/a/41312348/3397630

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

谢谢

卡提克

【讨论】:

以上是关于如何使用 JQuery 更改模型的值?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jQuery 中的滑块更改样式的值

如何使用 JavaScript 或 jQuery 更改数组内的对象的值?

使用 JQuery 或 codeigniter 单击按钮时如何更改数据库表的值(设置为默认 false 的布尔列)

如何使用 jQuery 更改 <span> 标签 </span> 之间的值?

如何使用 jQuery 检查所选选项的更改? [复制]

如何使用 Jquery 更改按钮单击时的 django 外键对象文本选择字段?