Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用HtmlFieldPrefix将数据发布到操作会产生空模型

使用HtmlFieldPrefix将数据发布到操作会产生空模型
EN

Stack Overflow用户
提问于 2019-06-23 19:43:27
回答 1查看 289关注 0票数 0

在我的应用程序中,我有几个模式窗口。它们中的每一个都采用相同的局部视图和相同的视图模型,但显示其他数据。为此,我生成了一个动态HtmlFieldPrefix as,这样就不会有多个同名的ID。示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@foreach (var product in Model.Products)
{
    string buyModalId = product.BuyModel.BindingPrefix;
    @await Html.PartialForAsync("_BuyForm", product.BuyModel, buyModalId)
}

BindingPrefix包含一个动态添加的字符串(例如buy-product-{ID})。在我看来,我还有一个隐藏的字段,它应该回发绑定前缀:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Html.Hidden(nameof(Model.BindingPrefix), Model.BindingPrefix)

(来源:Asp.Net MVC Dynamic Model Binding Prefix)

然而,这不起作用,因为绑定前缀在POSTing时也是null。因此,我的控制器中的await TryUpdateModelAsync(model, model.BindingPrefix);失败。

Html.PartialForAsync方法的代码如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static Task<IHtmlContent> PartialForAsync(this IHtmlHelper htmlHelper, string partialViewName, object model, string prefix)
{
    var viewData = new ViewDataDictionary(htmlHelper.ViewData);
    var htmlPrefix = viewData.TemplateInfo.HtmlFieldPrefix;
    viewData.TemplateInfo.HtmlFieldPrefix += !Equals(htmlPrefix, string.Empty) ? $".{prefix}" : prefix;
    var part = htmlHelper.PartialAsync(partialViewName, model, viewData);
    return part;
}

(来源:MVC 6 VNext how to set HtmlFieldPrefix?)

我遗漏了什么?为什么我的模型仍然是null?当删除绑定前缀时,绑定可以完美地工作--但是浏览器会抛出关于多个相同ID的警告。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-24 18:26:12

通过在我的模型中使用自定义模型绑定器找到了答案:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public override void BindModel(ModelBindingContext bindingContext)
{
    var providers = bindingContext.ValueProvider as System.Collections.IList;
    var formProvider = providers?.OfType<JQueryFormValueProvider>().FirstOrDefault();
    if (formProvider != null)
    {
        var (_, value) = formProvider.GetKeysFromPrefix(string.Empty).First();
        bindingContext.BinderModelName = value;
        bindingContext.FieldName = value;
        bindingContext.ModelName = value;
    }

    base.BindModel(bindingContext);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56727236

复制
相关文章
如何使用AndroidStudio将开源项目library发布到jcenter
我相信技术爱好者都喜欢开源,也都喜欢分享,随着技术的慢慢提高,很多开发者想将自己的开源类库分享出来,对于Android开发者来说,以前使用Eclipse开发时,直接引用类库或者打成jar包分享出来就行,现在使用AndroidStudio开发,引用类库直接在build.gradle文件里面添加一行引用代码即可。我们带着问题进入分析。 为什么只需要添加一行引用代码即可 AndroidStudio是从Maven Repository服务器下载类库的。基本上有jcenter和Maven Central这两个服务器用
非著名程序员
2018/02/02
1.1K0
如何使用AndroidStudio将开源项目library发布到jcenter
基于Python操作将数据存储到本地文件
前面说过Python爬取的数据可以存储到文件、关系型数据库、非关系型数据库。前面两篇文章没看的,可快速戳这里查看!《使用Python将数据存入SQLite3数据库》
JiekeXu之路
2019/08/15
5.4K0
将项目发布到jcenter仓库
将项目发布到jcenter仓库可以方便他人直接使用,下面总结一下流程和可能遇到的问题
杜金房
2020/12/21
1.2K0
将项目发布到jcenter仓库
【Kotlin】空安全 ③ ( 手动空安全管理 | 非空断言操作符 !! | 使用 if 语句判空 )
Kotlin 中的 可空类型 变量 , 在运行时 可以选择 不启用 安全调用 操作 ,
韩曙亮
2023/03/30
2K0
【Kotlin】空安全 ③ ( 手动空安全管理 | 非空断言操作符 !! | 使用 if 语句判空 )
【Kotlin】空安全 ④ ( 手动空安全管理 | 空合并操作符 ?: | 空合并操作符与 let 函数结合使用 )
如果 表达式 A 的值 不为 null , 则 整个表达式的值 就是 表达式 A 的值 ;
韩曙亮
2023/03/30
8780
【Kotlin】空安全 ④ ( 手动空安全管理 | 空合并操作符 ?: | 空合并操作符与 let 函数结合使用 )
将项目发布到 Homebrew 官方仓库
Homebrew 标榜自己是 “macOS(或 Linux)缺失的软件包的管理器”,使用 macOS 作为开发终端的用户,往往绕不过 brew 这个软件包管理工具。确实在 macOS 上没有比 brew 更好用的软件包管理工具了,基本上想用的 CLI 工具,只需一行命令就可一键安装,非常的方便。记得去年博主还写过一篇 《Golang 装逼指南 Ⅱ:在 Homwebrew 上发布 Golang 项目》,当时只是介绍了如何将 Golang 开发的 CLI 工具发布到自建的 homebrew-tap 上。本文则是讲解如何将自己开发的软件,推送到官方的 homebrew-core[1] 仓库中,使用像 brew install kubecm 这样的命令即可完成安装。
郭旭东
2020/12/30
1.7K0
将项目发布到 Homebrew 官方仓库
PyTorch 转入 Linux 基金会,对 AI 研究将产生重大影响
作者 | 黄楠 编辑 | 陈彩娴 近日,PyTorch 创始人 Soumith Chintala 在PyTorch官网宣布称,PyTorch 作为一个顶级项目,将正式转移到 Linux 基金会(LF),名称为 PyTorch 基金会。 PyTorch 诞生于 2017 年 1 月,由 Facebook 人工智能研究院(FAIR)推出,是一个基于 Torch 的 Python 开源机器学习库,可用于自然语言处理等应用程序。作为最受欢迎的机器学习框架之一,PyTorch 目前已拥有超过 2400 名贡献者,以
AI科技评论
2022/09/15
6530
PyTorch 转入 Linux 基金会,对 AI 研究将产生重大影响
【Kotlin】空安全 ② ( 手动空安全管理 | 空安全调用操作符 ? | let 函数结合空安全调用操作符使用 )
文章目录 一、手动空安全管理 二、空安全调用操作符 ? 三、let 函数结合空安全调用操作符使用 一、手动空安全管理 Kotlin 语言中 , 变量类型 分为 可空类型 和 非空类型 , 默认状态 下
韩曙亮
2023/03/30
6140
【Kotlin】空安全 ② ( 手动空安全管理 | 空安全调用操作符 ? | let 函数结合空安全调用操作符使用 )
PyTorch 转入 Linux 基金会,对 AI 研究将产生重大影响
大数据文摘授权转载自AI科技评论 作者 | 黄楠 编辑 | 陈彩娴 近日,PyTorch 创始人 Soumith Chintala 在PyTorch官网宣布称,PyTorch 作为一个顶级项目,将正式转移到 Linux 基金会(LF),名称为 PyTorch 基金会。 PyTorch 诞生于 2017 年 1 月,由 Facebook 人工智能研究院(FAIR)推出,是一个基于 Torch 的 Python 开源机器学习库,可用于自然语言处理等应用程序。作为最受欢迎的机器学习框架之一,PyTorch 目前已
大数据文摘
2022/09/15
5820
PyTorch 转入 Linux 基金会,对 AI 研究将产生重大影响
Unity3d导入3dMax模型会产生的
Unity3d 导入3dMax模型会产生的问题, 按照官方的说明,将max模型导成fbx档导入untiy似乎也不??能解决    x轴向偏转    3dmax模型导入后自动有一个x轴270度的
py3study
2020/01/14
1.1K0
将Power Pivot模型数据取值到单元格中
在Excel中,使用Power Pivot搭建的模型通常用透视表展现结果,如下图所示。
wujunmin
2021/09/07
1.4K0
将Power Pivot模型数据取值到单元格中
Druid 使用 Kafka 将数据载入到 Kafka
现在让我们为我们的主题运行一个生成器(producer),然后向主题中发送一些数据!
HoneyMoose
2021/08/07
8010
Druid 使用 Kafka 将数据载入到 Kafka
【数据分析】当大数据碰撞征信会产生什么?
随着大数据风潮的来临,在改变数字产业的同时,也让更多关联产业产生了颠覆性的变化,例如征信行业以及以征信为基础的金融行业。 行为数据化,数据信用化,在这一系列流程中,曾经评判个人或者企业的标准和方式已经被深刻地打上时代烙印,带有更多“大数据特性”以及“互联网特性”,刻画个体画像的方式在变化,打造刻画不同画像模型的征信行业也正在变化。 大数据时代让非金融数据获得了全新生命。一方面,针对非金融数据的分析和建模在某些领域或主题上,获得了较针对传统金融数据分析后更为有价值的结果;另一方面,当前中国社会存在着大量并不拥
陆勤_数据人网
2018/02/27
1.5K0
将WordPress发布到静态GitLab页面站点
通过 GitLab 或 GitHub Pages 来提供一个 WordPress 镜像站点, 从而最小化安全问题。
星哥玩云
2022/07/14
6520
mvc一对多模型表单的快速构建
Q:在实际的开发中,经常会遇到一个模型中包含有多个条目的表单。如何将数据提交到后台? A: 以数组的形式提交到后台就Ok了(真的那么简单么,如果再嵌套一层呢?) A2:拆分多个模型,映射就没啥问题了。但......有点麻烦啊~~
易墨
2018/09/14
1.6K0
mvc一对多模型表单的快速构建
将jar包发布到本地maven仓库
3. 发布该jar包到本地maven仓库(错误示范) $ mvn install:install-file-Dfile=C:\Users\11851\Downloads\qcloudsms_java-1.0.4\qcloudsms_java-1.0.4\target\qcloudsms-1.0.4.jar-DgroupId=com.github.qcouldsms-DartifactId=qcloudsms-Dversion=1.0.4-Dpackaging=jar
喜欢天文的pony站长
2020/06/29
1.5K0
将jar包发布到本地maven仓库
教你轻松将Android library 发布到JCenter
JCenter是全世界最大的Java仓库,也是Android Studio中repositories的默认节点。JCenter支持Maven, Gradle, Ivy, SBT 等大部分构建工具。将项
CrazyCodeBoy
2018/05/07
1.1K0
教你轻松将Android library 发布到JCenter
25 - 将循环产生的列表变成产生器
如何将 i for i in range(20) 变成产生器 # 如果列表是通过 for 循环产生的,只需要将方括号变成圆括号,就会将列表变成一个产生器 a = [i for i in range(10)] print(a) print(type(a)) b = (i for i in range(10)) print(b) print(type(b)) for i in a: print(i) for i in b: print(i) x = (1,
ruochen
2021/05/23
7080
25 - 将循环产生的列表变成产生器
点击加载更多

相似问题

通过Ajax发布表单数据会产生Null模型数据

10

将模型从视图发布到操作结果

26

将Java部署到Cloud会产生池空错误

11

HtmlFieldPrefix未映射到模型

21

试图发布到GooglePlay appStore会产生错误403。

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文