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 动态控件 的相关文章

  • Visual Studio 扩展找不到所需的程序集

    我为 Visual Studio 2013 编写了一个扩展 因为该死的组合框错误 https stackoverflow com questions 7800032 cancel combobox selection in wpf with
  • 在 Asp.Net MVC 视图中使用 dropdownlistfor 和 foreach 吗?

    我有一个带有 foreach 循环的视图 用于模型的列表属性 现在 我希望能够让用户使用下拉列表设置列表中每个项目的值 但我不知道该怎么做 当它不在 foreach 循环中时 我使用过类似的东西 Html DropDownListFor m
  • 最新的反应式扩展 (Rx) 教程

    我对反应式扩展非常感兴趣 但我找不到最新的教程 我开始于使用 NET 响应式扩展消除异步忧郁症 http go microsoft com fwlink LinkId 208528但它已经过时了 我可以找出一些改变 但我无法让很多例子发挥作
  • 从 .resx 文件组获取所有可用区域性

    我需要以编程方式列出 resx 文件组中的可用区域性 但 ResourceManager 类似乎没有帮助 我可能有 Labels resx Labels fr FR resx Labels ro RO resx 等等 但是 我如何在运行时找
  • 禁用 ASP.net 文本框而不实际禁用它?

    在我的 ASP Net 应用程序中 有一个文本框可以从CalendarExtender 填充文本框后 它会将该日期与表单上的另一个日期进行检查并显示modalpopupextender如果日期错误 则会弹出窗口 但是 我不想允许用户输入此文
  • orchard cms路由问题

    我创建了一些自定义内容类型 其中包括路线部分 以便我的内容管理员可以编辑项目的别名 我没有运气配置一条路线 使我自己的控制器能够为这些项目的请求提供服务 核心 Routable 模块中到 ItemController 的路径的路由优先级为
  • 以线程安全的方式获取随机数

    这是一篇描述随机数线程安全性的好文章 以线程安全的方式获取随机数 http blogs msdn com b pfxteam archive 2009 02 19 9434171 aspx 但我坚持使用 RandomGen2 示例 publ
  • 在 .Net 中创建 EPUB

    有没有可以用来在 NET C 中创建 epub 文件的库 Flowdocument gt epub 转换工具将是理想的选择 但任何类型的库都很棒 我还对评估编写一个程序的复杂程度感兴趣 我知道它基本上是一堆压缩的 XHTML 文件 但我不断
  • 如何在不下载内容的情况下执行 GET 请求?

    我正在开发一个链接检查器 一般来说我可以执行HEAD请求 但是有些网站似乎禁用了这个动词 所以在失败时我还需要执行GET请求 仔细检查链接是否确实已失效 我使用以下代码作为我的链接测试器 public class ValidateResul
  • 如何从 SOAP 响应中删除额外的结果标签

    我知道这个问题以前曾被问过 但我在任何地方都找不到答案 问题是我的 asmx 文件中有以下代码 namespace IrancellSmsServer SoapDocumentService RoutingStyle SoapService
  • 基于 Web.Config 使用的 GAC 程序集版本

    Good Day 我有一个在 GAC 中使用自定义程序集的项目 为了能够使用它 我在中添加了对我的项目的引用 C WINDOWS Microsoft NET assembly GAC MSIL JOHN CommonLib v4 0 1 0
  • 数组与列表的性能

    假设您需要一个需要频繁迭代的整数列表 数组 我的意思是非常频繁 原因可能有所不同 但可以说它位于大容量处理的最内层循环的核心 一般来说 人们会选择使用列表 List 因为它们的大小具有灵活性 最重要的是 msdn 文档声称列表在内部使用数组
  • 在 Foreach 或 For 循环中使用 EditorFor (ASP.NET MVC + RAZOR)

    我目前正在实施一个家谱我的 ASP NET MVC 项目中的系统 为了设置家庭成员之间的关系 我需要每行显示两个 ComboBox DropDownList 来定义一个成员与另一个成员之间的关系 首先我将分享我的代码 然后我将解释到目前为止
  • C#:DataSet.readXML( "filepath" ) 如何处理包含对象内对象内对象的 XML 文件?

    我有一个 xml 文件 格式如下
  • ASP.NET WebApi - 一个控制器中的多个 GET 操作

    I have Users控制器和基本 REST 模式工作得很好 不过我需要一种额外的模式users id usergroups这将返回该用户的所有用户组 实现这一点的最佳方法是什么 因为我想我将需要在更多控制器上使用类似的路由 仅使用默认值
  • 在 Javascript 中本地化字符串

    我目前正在使用 resx文件来管理我的 NET 服务器端资源 我正在处理的应用程序还允许开发人员将 JavaScript 插入各种事件处理程序中以进行客户端验证等 对我来说本地化 JavaScript 消息和字符串的最佳方法是什么 理想情况
  • 我的机器密钥是自动生成的还是隔离的?

    我正在尝试分享 ASPXAUTHASP NET MVC 4 应用程序 在 IIS 7 5 中 和使用的服务之间的 cookieHttpListener在同一主机上 浏览器正确地向两者呈现 cookie 但我的服务收到System Web H
  • 抽象类或接口。哪种方式是正确的?

    有两种方法可以选择抽象类或接口 微软解决方案和Oracle解决方案 微软 设计指南 请使用抽象 在 Visual Basic 中为 MustInherit 类而不是接口来将协定与实现分离 http msdn microsoft com en
  • 为什么WCF中不允许方法重载?

    假设这是一个ServiceContract ServiceContract public interface MyService OperationContract int Sum int x int y OperationContract
  • 是什么原因导致 Linq 错误:此方法无法转换为存储表达式?

    我有一堆具有相同 select 语句的 Linq to Entity 方法 所以我想我会很聪明 并将其分离到它自己的方法中以减少冗余 但是当我尝试运行代码时 我得到了以下内容错误 该方法不能转化为 商店表达式 这是我创建的方法 public

随机推荐