【问题标题】:How do I add ASP.NET server controls to my MVC4 views?如何将 ASP.NET 服务器控件添加到我的 MVC4 视图?
【发布时间】:2013-03-22 13:58:22
【问题描述】:

正如帐户名所说,我确实是一个 n00b。 ;)

我是 MVC 的新手。我只是想将<asp:Label/> 添加到创建项目时存根的默认视图之一。但是在智能感知中什么都没有出现,并且在解决方案中的任何地方都没有@Register,标签前缀为“asp”。我在构建时收到警告,“无法识别的命名空间 'asp'”,然后当我运行该站点时,标签不会显示在页面上。

我想我一直认为在其他非 MVC Web 项目中在某处列出了一个 tagprefix="asp" 是理所当然的。但是在互联网上搜索答案之后,我无法在 MVC 中找到任何关于如何做到这一点的信息。似乎它应该是交钥匙的东西,而我不得不努力寻找答案。

如何让 MVC4 识别 ASP.NET 控件?如果没有这个引用被存根,我怎么能做模板或网格或任何东西?

【问题讨论】:

  • MVC 无法识别 Web 窗体控件

标签: asp.net-mvc razor asp.net-mvc-4 visual-studio-2012


【解决方案1】:

不要那样做。

ASP.Net MVC 的全部意义在于它不使用服务器控件。

相反,您应该编写原始 HTML 并使用 HTML 助手(@Html.*() 方法)

【讨论】:

  • 如果我能将你的答案投票一百万次,我只想告诉人们,请不要永远那样做。
  • 哈哈……啊。行。我认为自己受过教育。这是否意味着我必须使用老式表格构建网格之类的东西,或者对 div 感兴趣?像网格上的列标题排序这样的事情呢?
  • @IAmAN00B:有各种各样的第三方助手可以制作精美的网格。
  • 查看 WebGrid 以获得在 MVC 中创建网格的简单方法 - msdn.microsoft.com/en-us/library/…
  • 有很多第三方控件可以与 MVC 一起使用,例如Telerik Kendo MVC 包装器。 JQuery 提供了很多免费的客户端控件(见jqueryui.com
【解决方案2】:

MVC 框架不是为服务器端控件设计的。事实上,你在 mvc 中根本没有服务器端控件。您所要做的就是使用标准的 html 控件。

我认为在深入了解 MVC 之前,您应该多阅读一些内容。与 Web 表单相比,这是一种完全不同的方法,尝试比较事物会导致太多的困惑和困难。你可能不得不忘记你通过努力学到的东西。

【讨论】:

  • 我一直在免费阅读。做了微软网站上的教程。但是对于您在任何地方所说的内容,都没有明确的陈述。这有点误导。而且我仍然对如何做服务器控件所做的事情有些摸不着头脑。服务器控制的重点是尽量减少手动编码的开发,并且每次我想要一个可排序的网格或其他东西时都不必重新发明轮子。
  • 您仍然可以在 MVC 中使用 Html 帮助程序重用代码。事实上有很多这样的可用。寻找demos.telerik.com/aspnet-mvc/razor/grid。这里的重点是从代码中抽象设计和对 html 渲染的绝对控制,这是服务器端控件无法实现的,因为它们发出了自己的 html。
  • 您也可以使用与控件类似的部分视图,您可以在其中使用它们来呈现可以重复使用的通用标记。不过,他们没有元素背后的代码。
  • 免费是游戏的名称。我想我不得不为像网格这样简单的东西付费。此外,RAD 的很大一部分都被淘汰了,因为我不得不购买带有学习曲线的 3rd-party 控件,这显然会随着控件的植入而出现。我宁愿自己构建,即使它看起来不那么好或行为不一样。
  • 这是一个免费的flexigrid.info - 稍加努力,你也会发现很多其他的
【解决方案3】:

因为 MVC 不使用视图状态来维护状态信息。 所以我们不能使用能够进行回发的 Asp.Net 服务器端控件。 .aspx 页面和 ASP.NET MVC 应用程序的执行生命周期不同,MVC 不支持许多 .aspx 页面生命周期事件,因为模型、视图和控制器之间的交互使用不同的生命周期型号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 2014-02-16
    • 1970-01-01
    相关资源
    最近更新 更多