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データがエンコードされます。 更新されたデータをJavaScript からプッシュするにはどうすればよいですか?@Model

4

1 に答える 1

8

更新されたデータを JavaScript から @Model にプッシュするにはどうすればよいですか?

サーバー上のものをjavascriptから変更することは絶対にできません。できることは、更新されたデータをクライアントに返すサーバーへの AJAX 要求だけです。@Modelビューが最初にレンダリングされると、クライアント上での概念がなくなることに注意してください。したがって、存在しないものを更新することについて話すことは、ほとんど意味がありません。AJAX リクエストが成功したら、更新が必要な DOM の対応する部分を更新するだけです。AJAX でヒットしているコントローラー アクションは、そのために必要なすべての情報を返すことができます。

于 2013-09-22T16:55:13.767 に答える