如何使用 AJAX 结果更新 Master detail razor 页面中的模型

白色

我有一个带有行的父表。
当他们选择一行时,将触发 AJAX 调用以返回子项详细信息。

我有多个显示子属性的文本框

 <div class="row">
    @Html.CheckBoxFor(m => m.Child.Property)
    @Html.LabelFor(m => m.Child.Property)
 </div>

但我看不到如何用我在 AJAX 结果中返回的孩子更新文本框。

我能做的最好的事情是从“完整”方法手动更新每个字段。但是我还有大约 30 个要添加的字段,这感觉像是错误的方法。

如何在不使用局部且不刷新整个页面的情况下将编辑框绑定到返回的模型?

我在@model 中添加了 Child 作为属性,并且 TextFor 似乎绑定正确。但是当然

 @Model.Child = child 

才不是。所以他们从不显示任何数据。

白色

这个问题是基于我的一个误解。起初,当我意识到我的错误时,我删除了这个问题。我正在恢复它,因为我认为新手很容易犯这个错误,一旦你犯了,答案就很难解决。

问题是页面渲染后@model 不再存在。没有像我想象的那样在幕后进行数据绑定。

您的选择是

  1. 手动填充元素。(这将需要编辑以适合您的特定元素)

     function DisplayMergeSection(data) {
         for (var key of Object.keys(data)) {
             DisplayElement(data, key, "#Clients_");
         }
     }
    
     function DisplayElement(data, key, prefix) {
         return;
         var val = data[key];
         var valString = data[key + "String"];
         var element = $(prefix + key)[0];
         if (element && element.type === 'text') {
             if ((val || '').toString().indexOf("Date(") > -1) {
                 var dtStart = new Date(parseInt(val.substr(6)));
                 element.value = moment(dtStart).format('MM/DD/YYYY');
             } else {
                 element.value = val;
             }
         } else if (element && element.type === 'checkbox') {
             element.checked = val;
         } else if (element && element.type === 'select-one') {
             element.value = valString;
         } else if (element && element.nodeName === 'DIV') {
             if ((val || '').toString().indexOf("Date(") > -1) {
                 var dtStart = new Date(parseInt(val.substr(6)));
                 element.innerText = moment(dtStart).format('MM/DD/YYYY');
             } else {
                 element.innerText = val;
             }
         }
     }
    
  2. 创建一堆带有敲除的可观察对象,然后设置数据绑定。这干净多了。
    https://knockoutjs.com/documentation/json-data.html

  3. 使用淘汰赛插件设置映射。
    https://knockoutjs.com/documentation/plugins-mapping.html

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从 Master-Detail 中的详细信息值使用 NotifyPropertyChange master

如何在Xamarin Forms UI Test的Master Detail页面中点击Master页面?

Angular中的Master / Detail网格

kogrid中的Master / Detail功能

使用Ionic 2在Plunker中创建Master / Detail应用

如何从其他位置在 Razor 页面中添加模型

如何将图像上传到 Razor 页面中的模型?

jQuery AJAX 请求返回 HTML 而不是 JSON 结果(Razor 页面)

Laravel 5.2更新Eloquent Master Detail在同一页面上

如何在ASP.NET Core 2.0中使用Razor页面处理Ajax请求

如何在Razor视图中更新JavaScript中的模型值?

使用js在razor中对mvc模型进行部分更新

如何在 Xamarin Forms 的 Master-Detail 详细信息页面下添加网格视图?

SwiftUI在tvOS中实现Master and Detail结构

使用 Uwp Community Toolkit 打印 master/detail 的详细信息页面

使用OnPost页面处理程序处理Razor页面中的AJAX请求

如何使用 .Net Core 应用程序中的模型渲染 Razor 页面并使用 HttpClient 发送它

使用Razor页面更新帖子标签

如何正确使用模型绑定来获取Razor页面中的单选按钮值

Razor,而不是 MVC:如何调用页面模型方法在按钮单击时更新数据库

当 master 和 detail 在 XML 中是单独的数据集时,XML Master/detail 数据选择

在使用实体模型的Razor中的表更新中,模型值为null

如何在Razor页面中序列化表单并发送JSON请求Ajax

Razor页面中的最佳实践:使用AJAX或Handlers处理发布/获取请求

更新时 Xamarin MasterDetailPage 始终为 null Master 和 Detail

使用AJAX删除Razor Pages

使用Razor在Ajax Call中传递多个参数

如何在 Blazor 应用程序的 Razor 页面中添加多个模型?

如何从 ASP.Net Core 5 (Razor) 中的中间件获取页面模型的类型?