如何使用 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 post
和 save
。我想当我点击按钮save and post
changestatus
属性值为1,当用户点击按钮save
changestatus
值为0时。
为此,我尝试使用 JQuery 获取 input
的 id
并更改 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
发送到控制器。 status
是Model
的一个属性,你懂吗?
需要在click函数内部整合表单数据。我已经更新了我的答案【参考方案2】:
嗨,我认为简单的解决方案是,如果您在模型强类型化的同一个 cshtml 文件中使用 jquery。
然后就可以直接使用@字符访问模型对象了。
示例:
var status = '@model.status'
然后你可以分配任何你想要的值。
所有其他类型的详细示例在以下链接中进行了很好的解释:
https://***.com/a/41312348/3397630
希望对您有所帮助,请让我知道您的想法或反馈
谢谢
卡提克
【讨论】:
以上是关于如何使用 JQuery 更改模型的值?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 JavaScript 或 jQuery 更改数组内的对象的值?
使用 JQuery 或 codeigniter 单击按钮时如何更改数据库表的值(设置为默认 false 的布尔列)