2

情况如下:我有一个 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数据将被编码。 如何将更新的数据推送到@Model来自 javascript?

4

1 回答 1

8

如何将更新的数据从 javascript 推送到 @Model?

您绝对不能从 javascript 修改服务器上的任何内容。您所能做的就是向服务器发出 AJAX 请求,它将刷新的数据返回给客户端。请记住,一旦最初呈现视图,客户端就不再有任何概念@Model。因此,谈论更新不存在的东西几乎没有任何意义。在您的 AJAX 请求成功后,只需更新 DOM 中需要更新的相应部分。您使用 AJAX 触发的控制器操作可能会返回所有必要的信息。

于 2013-09-22T16:55:13.767 回答