UserControl等效于MVC3?
在Web窗体上,我们有UserControls
。 这些控件具有代码隐藏function,可以在不依赖于其他内容的不同项目/解决方案中使用。
我想创建一个控件来呈现一些控件,并且会有一些“触发事件”的链接。 我希望它们不会附加在我的网站上,我希望能够在另一个网站上使用相同的“控件”。 MVC中的等价物是什么? 是否可以使用控制器编译视图并在其他地方使用DLL?
与MVC中WebForms风格的可重用用户控件最接近的function是html帮助器。 html帮助器是一种返回一些标记的方法。 建议的方法是在HtmlHelper
或MVC页面的某些其他属性的扩展方法的forms下实现它们:
public static IHtmlString MyControl(this HtmlHelper helper, string value) { return new HtmlString("" + value + "
"); }
您可以直接将此方法添加到MVC项目中,也可以将其添加到单独的类库中。 类库需要引用的唯一内容是用于HtmlHelper
引用的System.Web.Mvc.dll(如果使用更多类型,它可能还需要System.Web.dll)。
你通常从你的视图中调用它们(这个例子使用了MVC 3中新增的Razor语法)
@Html.MyControl("my value")
虽然表面上的html帮助程序像用户控件一样发出标记,但是存在显着差异。 最重要的一点是MVC视图没有WebForms页面生命周期的概念。 这意味着与用户控件不同,html助手会在一次传递中呈现。 WebForms中没有像Init,Load,Render等多个阶段,您可以在其中连接服务器端事件以与页面上的其他控件进行交互。
根据您所讨论的特定类型的事件,可能有适当的以MVC为中心的技术来解决您的任务。 你能提供更多关于你想做什么的细节吗? Html助手可以非常强大。 例如,像TextBoxFor
这样内置的MVC输入控件可以挂钩客户端validation等。
由于“事件”在MVC中不存在与WebForms中相同的意义,因此满足您的所有要求将非常棘手。
对于UserControl等效的UI层,您应该使用PartialView,可能位于Views / Shared / Templates文件夹中,具体取决于您是否希望它与某个Model类型相关联。
对于后端(“事件”),您可能应该实现一个Controller,您可以从链接发送请求,并支持您需要的所有行为。
要在各种项目中使用这些function,您必须同时复制控制器和模板/局部视图。 不可否认,重新使用它可能并不像WebForms中的全部用户控件一样简单,但这是一个明确的关注点分离的限制,这在基于层的精心设计的基础上很明显WebForms应用程序也是如此。
针对我提到的关注点分离“限制”的评论进行更新 :
控制器当然可以分布在一个单独的组件中,它有自己的测试组件等。但是,包括控制器组件(或组件) 和带有前端代码的局部视图/模板可能还有一件事要做(即可能没有做到)只是复制一个用户控件与它的代码隐藏(彼此相邻存储)。
上述就是C#学习教程:UserControl等效于MVC3?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/984217.html