- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有几个网站,这些网站共享几个组件。使用经典的 ASP.NET WebControls ascx 非常容易。我创建了几个这样的控件,放入一个 dll 库中,然后我通过 namespace.elements runat=server 从这些网站引用这些库...
但是升级到ASP.NET MVC后不知道怎么做。我可以将模型和 Controller 类放入 dll。
但是我应该如何将 View 放入和重用到 dll 中?
如果我可以在不重新编译 dll 的情况下更改 View ,我想 View 不会编译成 dll。
编辑:
我更喜欢一些标准的解决方案而不是第三方。我的最后一个解决方案是使用 StringBuilder 而不是 ViewEngine。
最佳答案
我一直在用 Razor Generator几年来将可重用的 MVC View 和帮助程序存储在单独的 .dll 中。
Razor 发电机 “是 Visual Studio 的自定义工具,允许在设计时而不是运行时处理 Razor 文件,允许将它们构建到程序集中,以便更简单地重用和分发。”
Installation instructions
It’s on the VS extension gallery, so install it from there. It’s called “Razor Generator” (not to be confused with “Razor Single File Generator for MVC”).
Usage in an MVC app
- Install the 'RazorGenerator.Mvc' package, which registers a special view engine
- Go to an MVC Razor view's property and set the Custom tool to RazorGenerator
- Optionally specify a value for Custom Tool Namespace to specify a namespace for the generated file. The project namespace is used by default.
- Optionally specify one of the generators in the first line of your Razor file. A generator declaration line looks like this: @* Generator: MvcHelper *@ . If you don't specify this, a generator is picked based on convention (e.g. files under Views are treated as MvcViews)
- You'll see a generated .cs file under the .cshtml file, which will be used at runtime instead of the .cshtml file
- You can also go to the nuget Package Manager Console and run 'Enable-RazorGenerator' to enable the Custom Tool on all the views.
- And to cause all the views to be regenerated, go to the nuget Package Manager Console and run 'Redo-RazorGenerator'. This is useful when you update the generator package and it needs to generate different code.
Usage in a View Library
If you need to create a separate library for your precompiled MVC views, the best approach is to actually create an MVC project for that library, instead of a library project. You'll never actually run it as an Mvc app, but the fact that it comes with the right set of config files allows intellisense and other things to work a lot better than in a library project.
You can then add a reference to that 'MVC View project' from your real MVC app.
And note that you need to install the 'RazorGenerator.Mvc' package into the library, not the main MVC app.
In the ASP.NET Web Forms world, you can achieve this by creating user controls or custom controls that can be compiled into standalone assemblies. These assemblies can be distributed across projects, thereby enabling their reuse across projects.
The Web Forms view engine offers the ViewUserControl class, which can be leveraged to create such components for the MVC framework. The Razor view engine in ASP.NET MVC, however, does not offer any such method out of the box.
关于asp.net - dll 中可重用的 ASP.NET MVC 组件,如 ASP.NET WebControls,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19751101/
在web控件上设置css类的两种方法有什么区别?它们是如何同步的?如果我将类添加到 CssClass 和 Attributes["class"],它将如何呈现? 最佳答案 它们都将呈现相同。 作为 h
我想知道这个的原因是因为看起来 __doPostBack('controlId','eventarg')引发指定控件的唯一事件,但我想知道如果控件有多个唯一事件会发生什么。 最佳答案 它实际上调用了控
我正在尝试使用复选框让用户选择要从 DataList 中删除的项目。这就是我的编码方式: protected void deleteItems_Click(object sender, EventAr
奇怪的错误。我有一个添加了分页的 gridview。 它可以很好地加载第一页,但是,如果我尝试
是否可以使用分部类来扩展 HyperLink 控件? 我想在控件上定义一些自定义属性,而不必扩展类......就像这样...... 并且能够在 OnInit/OnPreload 等上使用它们。 最佳
我想显示相同内容的版本之间的差异。最初我推出了自己的 WebControl,但是我想出的差分算法有点幼稚。 有人知道互联网上可能有用的 .Net 代码或 WebControl 吗? stackover
我有一个 tabcontrol,在 tabcontrol 中我有两个 tabitem,它们都包含一个 awesomium Webcontrol。然而,经过一段时间的随机时间后,Webcontrols
由于 WebControls 继承自 Control,后者实现了 IDisposable。是否有必要在 using 语句中调用 Dispose 或包装这些 WebControl 以防止内存泄漏或 AS
有没有办法在 webControl 中将 html 作为字符串加载? 类似于: webControl.Load("..."); 就像在普通的 wpf webControl 中使用的那样: webCon
通过 ref 传递 WebControl 等对象是否可以获得任何性能优势?我特别考虑修改控件外观的验证方法(背景颜色、CSSClass 等)... 最佳答案 没有。通过引用传递引用类型变量的唯一好处是
所以这是关于在 WinForms 中有效呈现谷歌地图的另一个问题WebControl . 这个问题有两种解决方案,一种是添加特定的注册表项(See this article),另一种是使用。 (如果您
我正在使用一个 Sublayout (Sitecore),并且有一个 placeHolder 当前包含 2 个 Web 控件。我想从一个 Webcontrol 访问标签到另一个 Webcontrol。
我正在尝试覆盖继承自 WebControl 的控件的 Controls 集合,以便当用户向 Web 控件添加控件时,我可以在它之前和之后放置按钮,并将其放入自己的包装器中。像这样: protected
我创建了一个自定义 WebControl,它实现了一个可以显示在网页顶部的简单消息框。类似于 YouTube 在其页面上显示消息的方式。我的问题是将 Click 事件从我添加到框中的任何按钮向下传递到
我想使用 c# 的 webbrowser 组件加载 HTML。我查找了 MSDN,但找不到任何可以将字符串 (HTML) 加载到 webbrowser 组件中的东西。我只看到用于加载 URL 的 na
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 9 年前。 Improve
为什么 System.Web.UI.WebControls.HiddenField 继承 System.Web.UI.Control 而不是 System.Web.UI.WebControls.Web
所以,我不确定发生了什么。我的老板对我使用 MVC 和 Razor 不满意,所以我被迫使用这种讨厌的 webcontrol/codebehind 风格进行编码。 =/ 错误是: Only Conten
我一直在查看 HtmlControls 的 Sitecore 文档和 WebControls ,但这些项目都没有任何有意义的描述或示例代码来展示它们的使用方式或它们的生产方式。 我了解如何使用简单的控
好的。 所以我认为是时候进行单元测试了,因为每个人都在讨论它已经足够长的时间了。我已经安装了 NUnit 并阅读了一些“单元测试介绍”类型的教程。 我目前正在组合一个小框架来帮助重建我们的一个 Web
我是一名优秀的程序员,十分优秀!