情况是这样的:我有一个 Razor 生成的项目列表(需要保持 Razor 生成):
@model MG.ViewModels.Profile.ProfileDetailsViewModel
foreach (var interest in Model.Interests)
{
<span class="subject-title">@interest.SubjectName</span>
<a data-bind='click: function(){viewDescription(@Html.Raw(Json.Encode(interest)))}'class="subject-description-button" href="#" title="View Details">details</a>
}
用户可以通过单击为 viewDescription
javascript 函数编码模型的“详细信息”链接来更新每个项目的详细信息:
self.viewDescription = function (data) {
// pull data into KO observables
self.selectedInterestDescription(data.Description);
self.selectedInterestSubject(data.SubjectName);
self.selectedInterestId(data.InterestId);
self.triggerModal(true);
};
在被触发的模式中,用户可以将 AJAX 请求发送到更新描述的端点。正如我所料,这一切都在起作用。
我遇到的问题是 - 当用户完成更新后, Razor Model
仍然有旧数据。因此,当用户在更新后从 Razor 生成的列表中单击“详细信息”时,旧的 @model
数据将被编码。 如何从 javascript 将更新后的数据推送到 @Model
?
最佳答案
How can I push the updated data to the @Model from javascript?
您绝对不能从 javascript 修改服务器上的任何内容。您所能做的就是向服务器发出 AJAX 请求,服务器会将刷新后的数据返回给客户端。请记住,一旦最初呈现 View ,客户端就不再有任何 @Model
的概念。因此,谈论更新不存在的东西几乎没有任何意义。在您的 AJAX 请求成功后,只需更新需要更新的 DOM 的相应部分。您使用 AJAX 执行的 Controller 操作可以返回所有必要的信息。
关于asp.net-mvc - 从 Javascript 更新 Razor 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18946094/