将ASP.NET(Telerik)多列组合框移植到MVC。

时间:2011-10-21 15:34:14

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-2 telerik sqldatasource

我需要将此one and only one AJAX control的功能移植到MVC,但鉴于MVC控件的选择很差,我认为我需要将这个传统控件带入MVC世界......

我宁愿不用ASP.NET控件玷污我的MVC项目,也欢迎你知道的json / MVC替代品。 (如果你知道的话,发布它们)

我在ASP.NET MVC中需要的示例UI Combo sample

返回移植

虽然我很遗憾将此控件移植到MVC,但由于Telerik在detailed instructionshow do this,因此它似乎是一种被广泛接受的做法。

这让我问:

  

MVC网站使用ASP.NET控件有多常见?

我再次提到我不想这样做,所以我欢迎MVC特定的替代方案。话虽这么说,我将继续尝试将该控件与我现有的网站合并。 </End Disclaimer>

如果您click on this hyperlink,并查看底部的源代码,您能告诉我应该在MVC中放置以下内容吗?

  1. 代码背后(我的第一直觉是使用Controller但another SO question表示我应该创建一个创建ViewName.aspx.cs文件)

  2. 如何将SQLDataSource移植到新的“模型”思维方式。我知道它们本质上是不同的,但我不知道如何以消耗信息的方式向ASP.NET控件提供数据。

  3. 如何处理AJAX组件?此控件具有使用回调的AJAX组件。是的,这很难看,但似乎我必须这样做。

  4. 显然,此模型会将数据保存在会话或视图状态中。我不知道这是否适用于MVC。非常感谢指导,备用控制或救生圈。

  5. 我已经完成了研究并且instructions from Telerik here and here描述了如何开始放置一个简单的菜单,但是我需要一些像这样的更复杂控件的帮助。

      

    注意:对于遇到此问题的所有评论,请记住我只想要这一个 ASP.NET控件功能;我在MVC中找不到类似的控件。

6 个答案:

答案 0 :(得分:6)

从asp.net webforms移植到MVC是一种范式转换。

直接移植不起作用。

模型是您通常描述数据并进行数据访问的地方 视图用于显示数据
控制器将另外两个组合在一起

因此,SQLDataSource是您的数据访问层,因此会转到您的模型 SQLDataSource的思维模式问题==模型然后你摆脱了从数据访问中解耦你的演示文稿

您必须将MVC开发视为新构建

我会从你喜欢的资源中选择一本书或视频系列,并从MVC3开始学习(它有一些差异可以简化构建速度并加强webforms和mvc之间的差异)

答案 1 :(得分:1)

在MVC视图中添加一个IFrame,它只显示WebForms页面(或者只在单个WebForms页面上使用该控件)。

没有任何内容表明您不能拥有包含WebForms和MVC页面的站点。您可以将单个URL路由到WebForm,仅用于此控件。

答案 2 :(得分:1)

  

我在MVC控件中找不到类似的功能

MVC实际上并没有像ASP.Net那样的控件概念 - 只有普通的旧HTML控件(即隐藏的输入,文本输入,复选框,单选按钮,选择框,文本区域,密码和按钮)。

当您需要比纯HTML控件更复杂的东西时,您需要使用一些JavaScript来实现这一点。

我不确定您是否能够将控件“移植”到MVC中 - 您很可能必须尝试使用​​MVC控制器和部分视图来重新创建自己的控件javascript来创建控件。

看一下JQuery UI Autosomplete plugin - 你可能会用它来实现类似的东西

答案 3 :(得分:1)

希望这有帮助。

答案 4 :(得分:1)

为什么不使用telerik MVC控件?他们工作得很好。要么通过NuGet包获取它们,要么访问此链接http://www.telerik.com/products/aspnet-mvc.aspx

答案 5 :(得分:1)

  1. 我宁愿使用ViewModel而不是代码

  2. 您不必丢弃SqlDataSource,您可以使用结果集并从中取出您的模型,问题可能是结果集中的列名...棘手但可以完成

  3. 由于除了助手之外没有MVC中的组件,你可能需要jQuery的帮助,这很容易

    $。AJAX({     url:“/ controller / action”,     数据:{/ * json或序列化形式* /},     成功:功能(数据){         //如果你从/ controller / action获得了html的响应          $( “#some_div”)HTML(数据);     } }

  4. 会话在MVC中可用但视图不可用,如果需要像viewstate这样的东西,可以使用HttpContenxt.Cache或TempData。使用TempData在重定向之间保留数据,或使用httpcontext.cache进一步缓存数据。