假设我有2个MVC Web项目(web1和web2)和1个包含共享视图的项目(常见)(using the razorgenerator of David Ebbo)
web1和web2都有一个test.cshtml文件。两个test.cshtml文件中的几个代码块完全相同
我试图找出是否可以在不同项目中的几个cshtml文件之间共享declarative helper (@helper)。所以在我的App_Code中放一个cshtml文件没有帮助(我需要在每个web项目中都有1个,这显然不是我想要的)。
我知道我可以在我的'common'项目中创建一堆共享的部分视图,但是创建20个cshtml文件似乎有点开销,每个文件都包含一小部分html。
我知道我可以创建一个标准的帮助方法(static string GenerateAPieceOfHtml(this HtmlHelper helper, ....)
),但是我可以在cshtml文件中轻松编写html。
我想了一会儿I bumped into an answer that would allow me to do it。但正如我在评论中所写,该代码并没有为我编译。
我希望我的问题很清楚:)
[更新]
正如csharpsi在评论中提出的那样..我确实试过了其他帖子中的代码,但它并没有为我吐出任何HTML。自从我开始认为这个答案应该可以解决问题因为它有13个赞成票后,我决定再试一次..
再一次,我没有得到任何输出,但后来我尝试了一点点......并且成功!
我正在尝试这个(它不会在页面上吐出任何HTML):
@{ new Test().DoSomething(Model); }
这是工作的版本:
@{
var html = new Test().DoSomething(Model);
@html
}
其他有效的版本:
@(new Test().DoSomething(Model))
这个问题该怎么办?删除它?自己写一个答案?
答案 0 :(得分:0)
为什么你要为此使用剃刀助手呢? Razor助手是一个特定的视图引擎黑客,你的应用程序不应该在很多地方(甚至在不同的网站之间)依赖它们。在这种情况下,请务必使用标准MVC方式 - HTML帮助程序。这些可以在网站之间轻松共享,例如,您可以创建自己的类库。