情况如下:我有一个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请求。这很有用,正如我所料。
我正在努力的是 - 当用户完成更新时,剃刀Model
仍然具有旧数据。因此,当用户在更新后点击Razor生成的列表中的“详细信息”时,旧的@model
数据将被编码。 如何将更新后的数据从javascript推送到@Model
?
答案 0 :(得分:7)
如何从javascript将更新的数据推送到@Model?
您绝对无法通过javascript修改服务器上的任何内容。您所能做的只是向服务器发出AJAX请求,该请求将刷新的数据返回给客户端。请记住,一旦最初呈现视图,客户端上就不再有@Model
的概念了。因此,谈论更新不存在的东西几乎没有任何意义。在您的AJAX请求成功后,只需更新您需要更新的DOM的相应部分。您使用AJAX进行的控制器操作可以返回所有必要的信息。