asp.net-mvc - 从 Javascript 更新 Razor 模型

标签 asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 knockout.js

情况是这样的:我有一个 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/

相关文章:

asp.net-mvc - 如何在asp.net mvc中获取多选下拉列表值

c# - 无法加载文件或程序集 System.Web.Mvc 或其依赖项之一

asp.net - 为什么 ASP.NET View 引擎检查 .Mobile.cshtml View 路径?

asp.net-mvc - 有没有办法将 Html.BeginForm 集中设置为 autocomplete=off?

c# - 对象引用未设置为局部 View 中对象的实例

c# - 如何在 visual studio community 2015 中将 Copy Local 属性设置为 true

c# - 如何加快在 SQL 数据库表中插入文本文件的速度?

c# - 在 MVC cshtml 中每行显示三列

asp.net-mvc - <asp :TextBox> Vs &lt;input type ="text"> Vs Html. 文本框

asp.net - 发现了多种与名为 'Home'的 Controller 匹配的类型。 (两个区域,相同的 Controller 名称)