我正在创建一个ASP。NET MVC 5 SQL Server(实体框架,数据库优先)应用程序,其中有一个订单记录和一组附加到它的行项目记录。我正在使用视图模型显示数据。用户可以通过“添加”按钮将新的行项目记录添加到视图模型中,但在用户单击“保存”按钮之前,行项目不会提交到数据库中。(我之前写过关于另一个问题的申请:
ASP.NET MVC - passing modified viewmodel from AJAX to view
)
我的“添加”按钮工作正常……除了一个非常重要的用例。如果用户更改了网页中的某些数据,然后按下“添加”按钮,则在
@Html.Raw(Json.Encode(Model))
行被称为:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script>
$(document).ready(function () {
$("#mybutton").click(function () {
$.ajax({
url: "../AddNewLineItem/",
cache: false,
type: "POST",
data: {
'viewModel': @Html.Raw(Json.Encode(Model)),
},
success: function (data) {
$('#divPartial').append(data);
},
error: function (reponse) {
alert("Error: " + reponse);
}
});
});
});
</script>
显然,之所以会出现这种情况,是因为该模型尚未使用网页中的最新数据进行更新。然而,如何在通过JSON发送模型之前强制更新模型?(或者,是否有某种方法使视图模型始终与用户在表单中键入的内容保持同步?)