为什么 EditorTemplate 不显示数据?

2024-01-30

我重写了我的页面以使用 EditorTemplates。他们非常友善。但是,当我回发时,仅第一行回发数据。其他 4 行显示为空。 FormSection 有一个 FormRowModel 列表。 FormRows 有一个 CtrlInputDataModel 列表。我的代码如下。

Index

@model InspectionWebFormsMVC.ViewModels.FormSection

@{
    ViewBag.Title = "Testing Editor Templates";
}

<h2>Test Control for Webforms</h2>

@Html.EditorFor(x => x.sectionRows, "FormRowModel")

编辑器模板/FormRowModel

@model InspectionWebFormsMVC.ViewModels.FormRowModel

@using (Html.BeginForm("Index", "TestEdit", FormMethod.Post))
{
    int i = 0;

    //var testCtrls = Model.Where(x => x.RowInput.Where(y => types.Contains(y.RowCtrl.Type)));
    <div style="clear:both; padding:1%;">       
        <div class="section">
            @Model.Section
        </div>
        <div class="number">
            @Model.SectionNumber
        </div>
        <div class="desc">
            @Model.Description
        </div>
        <div class="ctrl">  
            @{
                List<string> types = new List<string>() { "dropdown", "text", "radio", "checkbox" }             
                @Html.EditorFor(y => y.RowInput.Where(z => types.Contains(z.RowCtrl.Type)), "CtrlInputDataModel")
            }
        </div>

编辑器模板/CtrlInputDataModel

@model InspectionWebFormsMVC.ViewModels.CtrlInputDataModel

@{
    var ddv = new SelectList(Model.RowCtrl.DefaultValues, "Value", "Label");

    switch (Model.RowCtrl.Type)
    {
        case "dropdown":
            //@Html.DropDownListFor(blah => Model.InputtedData, ddv)
            //@Html.HiddenFor(blah => Model.InputtedDataID)
            //@Html.HiddenFor(blah => Model.RowCtrl.CtrlTypeID)

            @Html.DropDownList("InputtedData", ddv)                                   
            @Html.Hidden("InputtedDataID", Model.InputtedDataID)
            @Html.Hidden("CtrlTypeID", Model.RowCtrl.CtrlTypeID)
            <br /> 
        break;
        case "text":
            //@Html.TextBoxFor(blah => Model.InputtedData)
            //@Html.HiddenFor(blah => Model.InputtedDataID)
            //@Html.HiddenFor(blah => Model.RowCtrl.CtrlTypeID) *@

            @Html.TextBox("InputtedData", Model.InputtedData)
            @Html.Hidden("InputtedDataID", Model.InputtedDataID)
            @Html.Hidden("CtrlTypeID", Model.RowCtrl.CtrlTypeID)  
            <br /> 
        break;
        case "radio":
            foreach (var sli in ddv)
            {
                //@Html.LabelFor(blah => Model.InputtedData, sli.Text)
                //@Html.RadioButtonFor(blah => Model.InputtedData, sli.Value)

                @Html.Label("InputtedData", sli.Text)
                @Html.RadioButton("InputtedData", Model.InputtedData, sli.Value)
            }
            //@Html.HiddenFor(blah => Model.InputtedDataID)
            //@Html.HiddenFor(blah => Model.RowCtrl.CtrlTypeID)

                @Html.Hidden("InputtedDataID", Model.InputtedDataID)
                @Html.Hidden("CtrlTypeID", Model.RowCtrl.CtrlTypeID)                                     
                <br /> 
        break;
        case "checkbox":
            foreach (var sli in ddv)
            {
                //@Html.LabelFor(blah => Model.InputtedData, sli.Text)
                //@Html.RadioButtonFor(blah => Model.InputtedData, sli.Value)

                @Html.Label("InputtedDataID", sli.Text)
                //@Html.CheckBox("InputtedData", false)

            }
                //@Html.HiddenFor(blah => Model.InputtedDataID)
                //@Html.HiddenFor(blah => Model.RowCtrl.CtrlTypeID)

                @Html.Hidden("InputtedDataID", Model.InputtedDataID)
                @Html.Hidden("CtrlTypeID", Model.RowCtrl.CtrlTypeID)   
                <br />
        break;
    }
}

生成的 HTML

<form action="/TestEdit" method="post">    
    <div style="clear:both; padding:1%;">       
        <div class="section">
            A
        </div>
        <div class="number">
            1
        </div>
        <div class="desc">
            First Row
        </div>
        <div class="ctrl">  

<select id="sectionRows_0__RowInput_0__InputtedData" name="sectionRows[0].RowInput[0].InputtedData"><option value="1">Yes</option>
<option value="0">No</option>
</select><input data-val="true" data-val-number="The field InputtedDataID must be a number." data-val-required="The InputtedDataID field is required." id="sectionRows_0__RowInput_0__InputtedDataID" name="sectionRows[0].RowInput[0].InputtedDataID" type="hidden" value="1" /><input data-val="true" data-val-number="The field CtrlTypeID must be a number." data-val-required="The CtrlTypeID field is required." id="sectionRows_0__RowInput_0__RowCtrl_CtrlTypeID" name="sectionRows[0].RowInput[0].RowCtrl.CtrlTypeID" type="hidden" value="1" />            <br /> 
    </div>
</form>

<form action="/TestEdit" method="post">    
    <div style="clear:both; padding:1%;">       
        <div class="section">
            A
        </div>
        <div class="number">
            2
        </div>
        <div class="desc">
            Second Row of Halls
        </div>
        <div class="ctrl">  

<select id="sectionRows_1__RowInput_0__InputtedData" name="sectionRows[1].RowInput[0].InputtedData"><option value="1">Accept</option>
<option value="0">Reject</option>
</select><input data-val="true" data-val-number="The field InputtedDataID must be a number." data-val-required="The InputtedDataID field is required." id="sectionRows_1__RowInput_0__InputtedDataID" name="sectionRows[1].RowInput[0].InputtedDataID" type="hidden" value="2" /><input data-val="true" data-val-number="The field CtrlTypeID must be a number." data-val-required="The CtrlTypeID field is required." id="sectionRows_1__RowInput_0__RowCtrl_CtrlTypeID" name="sectionRows[1].RowInput[0].RowCtrl.CtrlTypeID" type="hidden" value="2" />            <br /> 


<input id="sectionRows_1__RowInput_1__InputtedData" name="sectionRows[1].RowInput[1].InputtedData" type="text" value="UP, UP, DOWN, DOWN, LEFT, LEFT, RIGHT, RIGHT, B, A, B, A, START" /><input data-val="true" data-val-number="The field InputtedDataID must be a number." data-val-required="The InputtedDataID field is required." id="sectionRows_1__RowInput_1__InputtedDataID" name="sectionRows[1].RowInput[1].InputtedDataID" type="hidden" value="6" /><input data-val="true" data-val-number="The field CtrlTypeID must be a number." data-val-required="The CtrlTypeID field is required." id="sectionRows_1__RowInput_1__RowCtrl_CtrlTypeID" name="sectionRows[1].RowInput[1].RowCtrl.CtrlTypeID" type="hidden" value="6" />            <br /> 
    </div>
</form>

<form action="/TestEdit" method="post">    
    <div style="clear:both; padding:1%;">       
        <div class="section">
            A
        </div>
        <div class="number">
            3
        </div>
        <div class="desc">
            Third Row of fits and fixes and polishes
        </div>
        <div class="ctrl">  

<input id="sectionRows_2__RowInput_0__InputtedData" name="sectionRows[2].RowInput[0].InputtedData" type="text" value="50" /><input data-val="true" data-val-number="The field InputtedDataID must be a number." data-val-required="The InputtedDataID field is required." id="sectionRows_2__RowInput_0__InputtedDataID" name="sectionRows[2].RowInput[0].InputtedDataID" type="hidden" value="3" /><input data-val="true" data-val-number="The field CtrlTypeID must be a number." data-val-required="The CtrlTypeID field is required." id="sectionRows_2__RowInput_0__RowCtrl_CtrlTypeID" name="sectionRows[2].RowInput[0].RowCtrl.CtrlTypeID" type="hidden" value="3" />            <br /> 
    </div>
</form>

EDIT:

我已经更换了以下内容 -

 <div class="ctrl">  
                @{
                    List<string> types = new List<string>() { "dropdown", "text", "radio", "checkbox" }             
                    @Html.EditorFor(y => y.RowInput.Where(z => types.Contains(z.RowCtrl.Type)), "CtrlInputDataModel")
                }
 </div>

with

 <div class="ctrl">  
            @{
                //List<string> types = new List<string>() { "dropdown", "text", "radio", "checkbox" };
                //var yy = Model.RowInput.Where(z => types.Contains(z.RowCtrl.Type));            
                @Html.EditorFor(y => y.RowInput)
            }
 </div>

and

@Html.EditorFor(x => x.sectionRows, "FormRowModel")

with

@Html.EditorFor(x => x.sectionRows)

仍然得到相同的结果。仅第一行回发数据。其他行返回空。


因此,在 Darin 的帮助下,我将部分视图转换为编辑器模板。在这种情况下,这是一件好事(TM)。但是,我只能发回集合的第一行。经过一番谷歌搜索后,我遇到了这一页 http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/(各种 stackoverflow 问题也引用了它)。实现这段代码后,没有任何回发。然后我跑过去StackOverflow 上的这篇文章 https://stackoverflow.com/questions/9314058/mvc-3-dynamic-form-using-a-viewmodel。并发现我引用了错误的集合名称。我需要引用属性而不是模型名称。现在一切都按预期进行。

非常感谢达林为我(和其他人)提供的直接和间接的帮助。谢谢!

对于任何在让 Steve 的代码运行时遇到一些困难的人来说,请看这个页面 https://stackoverflow.com/questions/5076760/custom-html-helpers-dont-work-in-mvc3。这是让自定义 htmlhelpers 正常工作的整体解决方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 EditorTemplate 不显示数据? 的相关文章

  • 如何在单击按钮时重新绑定 igGrid igniteUI 控件中的数据?

    我在 ASP NET MVC3 应用程序中使用 Infragistics Ignite UI 控件 我有一个已绑定到 客户 数据的网格 工作正常 现在我有按钮了 单击后我会进行 ajax 调用 在控制器中 我编写了仅选择 客户 数据的一部分
  • MVC中无法从ViewBag中提取数据

    我试图在提交之前从 ViewBag 中提取数据并通过 JS 将其插入表单隐藏字段中 这不起作用 在调试时 我发现 JS 表达式的一部分被忽略了 因此 var 被评估为空字符串 这是 JS 部分 它应该执行分配 function setid
  • Apress Pro Asp.net MVC Framework 3 - SportsStore 编辑产品无法正常工作?

    大家好 有人购买了 Apress Pro Asp net MVC Framework 3 的 ALPHA 并创建了 SportsStore 吗 我无法终生编辑产品并成功更新数据库吗 没有显示错误 单元测试全部功能 但没有成功的 编辑 即我更
  • ViewDataFactory 和强类型母版页

    我试图让我的强类型母版页在我的 ASP MVC 2 0 应用程序中工作 在这两篇文章的帮助下我已经取得了很大的进展 在 ASP NET MVC 中将数据传递到母版页 https stackoverflow com questions 785
  • 缩小 DIV 和所有子元素

    我想在我的设计中重新调整部分 HTML 的大小 我需要以动画的形式进行此更改 DIV 本身及其所有内部元素 即图像 段落 锚点等 应该重新调整大小 就像调整具有恒定纵横比的图像大小一样 我认为 该工具应该获取元素的当前高度和宽度并增加 减少
  • 将无序列表转换为目录

    参考这个小提琴 http jsfiddle net exGnZ http jsfiddle net exGnZ 你好 我正在尝试用无序列表和前导点重现目录 不幸的是 当内容很长时 格式就会崩溃 有谁知道如何让下图中的第二章与点出现在同一行
  • 缩小 HTML、CSS 和 Javascript 是一个坏主意吗?

    维基百科定义缩小 http en wikipedia org wiki Minification 28programming 29 as 从源代码中删除所有不必要的字符而不改变其功能的过程 这些不必要的字符通常包括空格字符 换行符 注释 有
  • UIWebView 如何检测 被点击

    我知道下面的方法可以检测链接元素点击 但我想知道是否UIView可以检测是否img元素被点击 BOOL webView UIWebView webView shouldStartLoadWithRequest NSURLRequest re
  • 如何左对齐这些 Bootstrap 表单项?

    我是第一次使用 Bootstrap 在将此表单水平向左对齐时遇到很多麻烦 列表项是水平的 因为它们应该是水平的 但我希望控制标签 表单标签的 Bootstrap 类 全部位于向左浮动的相同位置 该表单包含在跨度为 7 的 div 中 因为我
  • 如何在浏览器上使用样式组件 CDN 构建?

    索引 html 我从以下位置获取 CDN 文件 我怎样才能访问styled功能 const styled window styled components不起作用 对于版本 5 如docs https styled components c
  • 鼠标移动时画布拖动

    我正在尝试构建一个可以使用鼠标移动拖动的画布 我做了一些我无法理解的错误 因为一开始似乎有效 然后出现了一个增量错误 使画布移动得太快 考虑以下代码 window onload function var canvas document ge
  • 如何默认或通过 CSS 将详细信息元素设置为 OPEN

    HTML5 添加了两个新元素 可用于标记文章的目录 details and summary 详细信息元素默认为关闭状态 隐藏除摘要元素之外的所有内容 单击时 它会展开以显示其内容 当它执行此操作时 它会向详细信息元素添加一个 open 属性
  • 保证金如何运作?

    我在下面提供了marginfix这是一个块级元素并且one and two也是块级的 但它们是浮动的 这就是为什么它们位于同一行布局的原因 但是marginfix也不浮动 块级元素应位于该元素下方 如下所示
  • CSS 过滤器在 Firefox 中不起作用

    我正在尝试 CSS 过滤器 但它在我的 Firefox 15 0 浏览器中不起作用 HTML div class google img src https www google com images srpr logo3w png div
  • @fontface - 禅宗购物车中的 403 禁止错误

    我不确定这是否是发布此内容的正确位置 因为我不知道问题出在哪里 基本上 字体现在对我来说真的很痛苦 而且没有任何效果 我尝试从 google fonts 加载字体 但遇到了 IE 问题 所以我决定下载它们并自己提供服务 但现在它无法在任何浏
  • 编译器失败,错误代码-1073741819

    我们遇到以下错误 而且每次都需要重启服务器 The compiler failed with error code 1073741819 此外 ASP Net 工作正常 只有 ASP Net MVC 应用程序无法工作 任何想法 我的错误代码
  • 文件缓存:查询字符串与上次修改时间?

    我正在研究缓存网站资源的方法 并注意到大多数与我类似的网站都使用查询字符串来覆盖缓存 例如 css style css v 124942823 后来 我注意到每当我保存 style css 文件时 最后修改的标头都会 更新 使得查询字符串变
  • 即使我的情况按预期发生变化,Angular ngClass 也不会更新我的课程

    我正在创建的模板中有类似的内容 div class nng 3 div 价值app layout isNavbarFixed等用零或一初始化 并且页面第一次加载时 适当的类被插入到我的div 不过 此后通
  • 如何让php页面从html页面接收ajax post

    我有一个非常简单的表单 其中有一个名字输入字段 我捕获了表单数据 并使用标准 jQuery 发布方法通过 ajax 将其传输到 PHP 页面 但是 我根本无法从 PHP 页面获得任何在服务器端捕获数据的响应 我不确定我做错了什么或缺少什么
  • 浮动CSS属性导致父div不继承高度?

    我在 div 中有一个元素设置为float right但是 它会导致最外面的 div 不环绕 这是jsfiddle http jsfiddle net W792X 5 for it 我试图让提交按钮在 div 内浮动 但设置该属性似乎会导致

随机推荐

  • Java 中的断言是什么以及何时应该使用它们?

    有哪些现实生活中的例子了解Java的关键作用assert关键词 断言 http docs oracle com javase specs jls se8 html jls 14 html jls 14 10 通过assert关键字 是在 J
  • 使用 VBA 更新 xlam 加载项

    Sub Install Addin Dim AI as excel addin Set AI Application Addins Add C Add In xlam AI Installed True Application Addins
  • 如何使我的数据集随时间连续? [R]

    我有一个 x y 日期和时间的数据集 我的初始数据集是 x y date time 1 2 1 1 01 15 00 2 5 1 1 01 17 00 3 1 1 1 01 18 00 5 7 1 1 01 21 00 2 6 1 1 01
  • 如何处理跨线程访问异常?

    在 WPF 中使用多线程时可能出现的一个常见异常是 调用线程无法访问该对象 因为另一个线程拥有它 有哪些选择可以正确处理这个问题 根据情况有多种选择 从另一个线程访问控件 e g updating a TextBlock with prog
  • 使用 Java 驱动程序获取 Mongo 实例的版本

    正如标题所示 我想获取客户端连接的 mongo 实例的版本 目前我使用的是 mongo java 驱动程序 2 9 3 mongo 实例是 2 2 2 我需要这个 以便支持两者 pushAll and push with each函数 因为
  • 尽管版本是托管的,为什么我会由于缺少 dependency.version 而得到无效的 pom?

    我有一个看起来像这样的案例 super 第三方依赖管理 父pom 超级的孩子 projectA 父母 pom 的孩子 对第三方的依赖 projectB 父母 pom 的孩子 对项目A的依赖 项目 A 构建得很好 但是当我尝试编译项目 B 时
  • Django 将页面限制为某些用户

    我开始尝试在我正在开发的网站上实现用户 也许这不是一个好方法 因为我是 django 的新手 到目前为止 我有一个简单的模板检查 可以为不同的人提供不同的链接 extends base htm block content if user u
  • QuickCheck 实例属于 cabal 包中的什么位置?

    我有一个阴谋集团包 https github com acfoltzer nbt导出一个类型NBT https github com acfoltzer nbt blob master src Data NBT hs这可能对其他开发人员有用
  • 事件冒泡和事件捕获有什么用? [复制]

    这个问题在这里已经有答案了 事件冒泡和事件捕获有什么用 如果您单击一个元素 例如页面上结构如下的链接 BODY DIV A 那么不仅 A 得到了 onclick 事件 它下面的所有元素也得到了 onclick 事件 第一轮是捕获阶段 从下到
  • Moq + 单元测试 - System.Reflection.TargetParameterCountException:参数计数不匹配

    我试图将 lambda 与多个参数函数一起使用 但当我尝试调用时 Moq 在运行时抛出此异常mock Object Convert value null null null line System Reflection TargetPara
  • Spring JPA PostgreSQL + MongoDB

    从 Spring 示例开始使用 REST 访问 MongoDB 数据 https spring io guides gs accessing mongodb data rest https spring io guides gs acces
  • 如何从 jpeg 图像中提取彩色点的坐标?

    我正在尝试使用 R 测量感兴趣的对象之间的距离 在本例中是树木的年轮 我之前的尝试 https stackoverflow com questions 8832810 r imagej measuring shortest distance
  • 对元组列表中的每个值求和

    我有一个与此类似的元组列表 l 1 2 3 4 5 6 7 8 9 0 我想创建一个简单的单行代码 它将给出以下结果 r 25 20 or r 25 20 don t care if tuple or list 这就像执行以下操作 r 0
  • React 测试库 - 避免 getBy?

    当使用 React 测试库测试组件时 我发现自己从getBy 有时需要将其替换为queryBy 例如 如果我需要检查某个元素是否不存在 我的测试最终混合了getBy and queryBy 我最近刚刚使用queryBy对于一切 这让我思考
  • 在 Android 中禁用声音安全级别通知

    在我的 android 应用程序中 我需要提高音量 当我提高音量时 我会收到如下通知 将音量提高到安全水平以上 长时间高音量收听可能会损害您的听力 如何禁用此功能 此限制已融入 Android 操作系统中 因此该解决方案几乎是通用的 您需要
  • 针对不同安装类型(服务器/客户端)的 Inno Setup 子选项/子组件

    我正在尝试使用服务器和客户端安装类型为我的应用程序准备设置 服务器类型很容易使用一些代码 但客户端安装也有很多选项 我正在尝试创建一个带有类型选择的页面 如果用户选择客户端安装 则还有许多其他选择 是否可以 Example Server 无
  • 如何按最大日期获取某些列的行?

    我想在列时获取最新列I and II是相同的 所以结果应该是 1 30 2017击败1 27 2017 I I III IV A X 1 30 2017 9 33 00 AM some data A Y 1 30 2017 9 33 00
  • 为什么选择 MVC 而不是优秀的旧式 ASP.NET?还是不明白为什么我应该走这条路?

    我知道这个问题之前已经被问过 并且我阅读了所有答案 但他们仍然没有给我我正在寻找的答案 我需要一些具体的东西 我自愿向我们组中的其他开发人员进行 MVC 演示 这迫使我学习它 每个人都面临的一个大问题是 MVC 可以带来哪些我们在 ASP
  • android:无法停止活动

    我是安卓新手 我有一个登录活动 它验证用户编号 然后启动 搜索活动 在运行时 我看到搜索活动出现 在验证用户之后 但 Android 在停止登录活动时遇到问题 我收到 java lang runtimeException 无法停止活动 co
  • 为什么 EditorTemplate 不显示数据?

    我重写了我的页面以使用 EditorTemplates 他们非常友善 但是 当我回发时 仅第一行回发数据 其他 4 行显示为空 FormSection 有一个 FormRowModel 列表 FormRows 有一个 CtrlInputDa