ASP.NET MVC 3动态控件

前端之家收集整理的这篇文章主要介绍了ASP.NET MVC 3动态控件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是MVC的新手,想知道如何在MVC3中动态创建控件?在我的情况下,情况是有一种形式,候选人进入他的工作经验,他可以添加多个条目,根据他以前工作过的公司数量.所以用户输入细节的控件集必须在用户说“添加另一个”时动态添加.

我有点像谷歌,但是使用jquery创建控件不能太多.我的主要问题是如何动态渲染控件,然后在提交表单时获取它们的值.

如果有人可以在这里提出一些样品/教程,那将是很棒的

解决方法

你明显来自 Asp.net WebForms背景,因此将MVC与WebForms相比较有一点问题.

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

添加额外的HTML元素是简单地在客户端上完成的,因为它快速,方便,不需要服务器端状态保存.并且因为(几乎)没有必要在服务器上加载这些.你可能已经发现,Asp.net MVC与Asp.net WebForms完全不同.

一个容易理解的例子

所以最简单的方法是在客户端上加载模板,然后根据该特定的模板添加新的项目. This JSFiddle shows you how.如果您不能在HTML中提供模板,您可以随时通过Ajax加载它,但是只有当有以下任何一种时,

>添加太多不同的模板 – 一个例子是一个用户列表的页面,每个用户需要一个复杂的模板,这可以减缓由于DB请求和膨胀的HTML
>模板取决于用户已经输入的其他数据,在这种情况下,我们无法在用户提供此数据之前准备一个模板(尽管.tmpl提供了条件和循环,所以我们应该尽可能使用它们).

基本上我使用jQuery和它的.tmpl()插件快速生成复杂的项目(复杂的,我的意思是不是由一个HTML元素组成),具有正确的命名和ID等等.控制名称对应于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> (当您动态添加新的和新的控件时,基本上会发生这种情况)您正在使用正确的输入形式命名,需要在客户端上解决问题.您可以在my blog post中阅读与此有关的所有细节,以及我在哪里解释问题,并提供一些类似于此的解决方案.

Important: Instead of linking to a CDN with jQuery .tmpl() I had to copy the minimized version of it directly into HTML part in JSFiddle example,because otherwise it won’t load the plugin.

猜你在找的asp.Net相关文章