ASP.NET MVC 3 动态控件

2023-11-23

我是 MVC 新手,想知道如何在 MVC3 中动态创建控件?就我而言,情况是有一个表格,候选人可以在其中输入他的工作经历,他可以根据他之前工作过的公司数量添加多个条目。因此,当用户说“添加另一个”时,需要动态添加用户输入详细信息的控件集。

我用 google 搜索了一下,但除了使用 jquery 创建控件之外,没有太多的了解。我的主要问题是如何动态渲染控件,然后在提交表单时获取它们的值。

如果有人可以建议一些关于此的示例/教程,那就太好了?


显然您有 Asp.net WebForms 背景,因此在比较 MVC 和 WebForms 时遇到一些问题。

动态控件通常添加在客户端

添加额外的 HTML 元素只需在客户端完成,因为它快速、方便并且不需要服务器端状态保存。因为(几乎)不需要将它们加载到服务器上。您可能已经发现,Asp.net MVC 的工作方式与 Asp.net WebForms 完全不同。

一个容易理解的例子

因此,最简单的方法是在客户端加载模板,然后根据该特定模板添加新项目。这个 JSFiddle 向您展示了如何。如果您无法在 HTML 中提供模板,您始终可以通过 Ajax 加载它,但只有在出现以下情况时才应该这样做:

  1. 添加太多不同的模板 - 例如一个包含用户列表的页面,其中每个用户都需要一个复杂的模板,这可能会由于数据库请求和臃肿的 HTML 而减慢速度
  2. 模板依赖于用户已经输入的其他数据,在这种情况下,我们无法在用户提供此数据之前准备模板(尽管.tmpl提供条件和循环,因此我们应该尽可能使用它们)。

基本上我用过 jQuery 及其.tmpl()插件可以快速生成具有正确命名和 ID 等的复杂项目(我所说的复杂是指不包含单个 HTML 元素)。控件名称对应于 Asp.net MVC 的工作方式。这些生成的字段可以轻松地对绑定到此控制器操作方法进行建模:

public ActionResult Experiences(Experience experience)
{
    // do what's appropriate
}

此代码中使用的相关类(仅相关属性):

public class Experience
{
    [Required]
    public IList<Company> Companies { get; set; }
    ...
}

public class Company
{
    [Required]
    public string Name { get; set; }
    ...
}

模型绑定到IList<T>就是这个想法

基本上每当你将模型绑定到IList<T>(这基本上是在动态添加新控件时发生的)您遇到了一些问题,需要在客户端上通过正确的输入表单命名来解决。您可以阅读与此相关的所有详细信息我的博文以及我解释问题并提供与此类似的解决方案的地方。

重要的:而不是使用 jQuery 链接到 CDN.tmpl()我必须将其最小化版本直接复制到 JSFiddle 示例中的 HTML 部分,否则它将无法加载插件。

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

ASP.NET MVC 3 动态控件 的相关文章

  • 如何让“dnu”命令在 OS X 上运行?

    刚刚下载并安装视觉工作室代码 https code visualstudio com 在 OS X 10 10 3 上 我已经设法部分遵循ASP NET 5 安装说明 https code visualstudio com docs ASP
  • 在 LINQ 查询中进行转换

    是否可以在 LINQ 查询中进行强制转换 为了编译器的缘故 下面的代码并不糟糕 但最好将其放入一个查询中 Content content dataStore RootControl as Controls Content List
  • C# 可以为控制台应用程序部分类“程序”类吗?

    我想知道是否可以将为任何控制台应用程序创建的默认 程序 类更改为部分类 我想这样做是因为我想要更好的组织 而不是将所有方法都放在按区域分类的 1 个文件中 对我来说 将某些方法类别放在单独的文件中会更有意义 我对分部类的理解是 它是多个文件
  • 查找数组中的多个索引

    假设我有一个像这样的数组 string fruits watermelon apple apple kiwi pear banana 是否有一个内置函数可以让我查询 apple 的所有索引 例如 fruits FindAllIndex ap
  • MVC 4 捆绑和缩小是否会进行缓存?

    我想使用 MVC4 的捆绑和模仿功能 但我担心模仿 是否每次客户端请求 css 和 javascript 时 捆绑 模拟过程都会起作用 如果是的话那不是每次都会有CPU开销吗 Quote http www asp net mvc tutor
  • 具有完整框架的 ASP NET Core 2

    我无法找到在完整框架下运行的 ASP NET MVC Core 应用程序的任何文档或示例 它应该受到支持 但正如我所说 我找不到任何有关如何为此配置项目的文档 并且自己无法解决它 有谁能做到这一点并且可以提供有关需要做什么的建议 样本吗 我
  • Selenium - 异常 - 连接关闭

    我正在使用最新的 Selenium WebDriver 使用 NET Microsoft 技术堆栈运行 这些天我观察到的是 套件中的所有测试都开始失败并抛出此异常 附加信息 向远程 WebDriver 服务器发送 HTTP 请求以获取 UR
  • __dopostback 未按预期工作

    场景 1 有效 这是我创建的 POC 我有一个脚本管理器 一个 html 文本框 一个 ASP NET 按钮 一个为上述按钮的 Click 事件设置了异步触发器的 updatepanel 对于我有的 html 文本框 onkeyup doP
  • .NET 中是否有与 WinAPI GetColorDirectory 等效的函数?

    有没有类似的函数GetColorDirectory http msdn microsoft com en us library windows desktop dd316928 28v vs 85 29 aspx 或者我应该通过 DLL 调
  • 工具提示出现在表单/窗口后面! (C#/VS 2008)

    由于某些奇怪的原因 我在 VS 2008 C winforms 应用程序中的工具提示显示在表单后面 这非常令人沮丧 我不知道我应该做什么 有人遇到过这个吗 有想法吗 PS 我正在表单中以编程方式执行 toolstip show 您可能需要检
  • 将列表拆分为多个部分 - VB 转换失败

    尝试编写一种将列表拆分为子列表的方法 Private Function SplitIdsIntoChunks ByVal keys As List Of String As List Of List Of String Return key
  • 如何向程序集添加上下文帮助

    我创建了一个 NET C 组件 将作为开发人员工具出售 我的问题是 如何将我自己的自定义上下文帮助添加到方法和属性中 因此 当我在某个方法上按 F1 时 我希望它转到特定的网页 这可能吗 使用 Visual Studio SDK 和帮助集成
  • .NETStandard1.6 PCL 错误:“您的项目未引用“.NETPlatform,Version=v5.0”框架”

    为了帮助重现该问题 请执行以下步骤在 Visual Studio 2015 中创建 NETStandard1 6 PCL 创建一个新的类库 适用于 iOS Android 和 Windows 在其属性页面中 单击 目标 NET 平台标准 将
  • .NET ListView列顺序问题

    我在表单中遇到问题 我已按以下顺序将列添加到 NET ListView 控件 A B C D A D 列的显示索引按顺序为 0 3 但它们的显示顺序错误 A B D C these are switched at runtime 注意 一切
  • NUnit 测试运行顺序

    默认情况下 nunit 测试按字母顺序运行 有谁知道有什么方法可以设置执行顺序吗 是否存在这样的属性 我只是想指出 虽然大多数受访者认为这些是单元测试 但问题并没有具体说明它们是 nUnit 是一个很棒的工具 可用于各种测试情况 我可以看到
  • 设置外部应用程序焦点

    在 VB NET 中 您可以使用以下命令将焦点设置到外部应用程序 AppActivate Windows Name or AppActivate processID As Integer 现在 如果您这样做 则效果很好 Dim intNot
  • .NET 中 IEqualityComparer 中 GetHashCode 的作用是什么?

    我试图了解 IEqualityComparer 接口的 GetHashCode 方法的作用 下面的例子取自MSDN using System using System Collections Generic class Example st
  • 锁定文件的一个块

    我有一个大小为 192k 的文件 我想锁定文件的中间部分 例如 我想用 c 锁定文件的 64k 128k 知道如何锁定文件的那部分吗 你需要使用锁定文件Ex http msdn microsoft com en us library win
  • 在 MVC3 视图中输入后显示度量单位的好方法是什么?

    我们开发了许多具有输入的系统 这些输入后面应该有一个相关的文本标签作为测量单位 例如平方米 立方米 吨 立方英尺等 我不需要做任何聪明的事情 比如测量单位之间的比例 只要确保它易于更新并且良好的实践即可 正在寻找相当自动的东西 这将计量单位
  • 为什么 32 位 .NET 进程的引用类型的最小大小为 12 字节

    我正在读专业 Net 性能 https rads stackoverflow com amzn click com 1430244585本书有关参考类型内部结构的部分 它提到 对于 32 位 net 进程 引用类型具有 4 字节的对象头和

随机推荐