【发布时间】:2008-11-25 16:31:57
【问题描述】:
在没有研究的情况下,我一直相信 MVC 模型中没有服务器控制。我很想知道这是否属实,如果是这样,如何实现与 Repeater 控件或其他任何其确切结构取决于模型内容的视图等效的东西?
【问题讨论】:
标签: asp.net asp.net-mvc
在没有研究的情况下,我一直相信 MVC 模型中没有服务器控制。我很想知道这是否属实,如果是这样,如何实现与 Repeater 控件或其他任何其确切结构取决于模型内容的视图等效的东西?
【问题讨论】:
标签: asp.net asp.net-mvc
ASP.NET MVC 不支持 ViewState 也不支持回发,因此所有依赖于它的 asp.net 控件都将不起作用。中继器控件是少数不需要它的控件之一,因此它确实可以工作。
控制的 mvc 等价物是为您生成 html 的 HtmlHelper 类。 htmlhelper 的集合相当大,但由于 webforms 和 asp.net mvc 的性质不同,您不会自动找到与常规 webforms 控件等效的控件。
MVCContrib 是 asp.net mvc 的 contrib 项目,因此您还可以在那里找到更多 htmlhelpers http://www.codeplex.com/MVCContrib
滚动您自己的 htmlhelper 方法也很容易
在这里找到一个很好的 ASP.NET MVC 起点http://www.asp.net/mvc/
【讨论】:
我不同意,Yuriy,控件没有用。一组数据绑定的 MVC 控件,很容易绑定到 viewdata,没有顽固的 ID 重写,不依赖讨厌的 viewstate 或 postback gunk 以及对模板的完全控制(默认为明智的标记),将是 MVC 框架的一个很好的补充。控件是一个非常强大和有用的概念,它可以显着增加开发时间,不应该仅仅因为它们带有丑陋的旧 webforms 时代的一些情感包袱而被丢弃! :)
【讨论】:
正确的,类似 rails 的 MVC 并不完全支持服务器端控件及其所有混乱的视图状态等...您可以使用其中的一些,但实际上不应该打扰。您可以通过使用视图组件重用 UI 部分,也可以使用来自 jQuery UI 或 Yahoo UI 的一些不错的客户端小部件来构建丰富的网格等...至于转发器...“foreach”是您的朋友 :)
【讨论】:
据我了解,您不需要服务器控件。相反,您将构建一个模型类,然后是一个视图类,负责显示来自该模型的数据。摘自 MSDN:
型号。模型管理行为 和应用领域的数据, 回应信息请求 关于它的状态(通常来自 查看),并响应指令 改变状态(通常从 控制器)。
查看。视图管理显示 信息。
控制器。控制器解释 从鼠标和键盘输入 用户,通知模型和/或 视情况进行更改。
【讨论】:
这是不正确的,您可以仍然使用服务器控制。解析/处理视图的引擎仍然是 Web 窗体使用的 ASP.NET 运行时。
使用中继器控件的example。
【讨论】:
我想会有一些智能辅助方法,比如 html.textbox 或类似的,它们会根据给定的对象集合绘制表格/网格。
您可以在 asp 自定义控件中打包您的 html 帮助程序,并在任何 mvc 应用程序中使用它...
有些人认为它像常规的 asp.net 服务器端控件,但没有视图状态、事件和所有其他与页面生命周期相关的东西。
【讨论】: