1

假设我有 2 个 MVC Web 项目(web1 和 web2)和 1 个包含共享视图(常见)的项目(使用 David Ebbo 的 razorgenerator
web1 和 web2 都有一个 test.cshtml 文件。两个 test.cshtml 文件中的几个代码块完全相同。
我试图找出是否可以在不同项目中的几个 cshtml 文件之间共享声明性帮助器(@helper) 。因此,在我的 App_Code 中放置一个 cshtml 文件并没有帮助(我需要在每个 Web 项目中有 1 个,这显然不是我想要的)。
我知道我可以在我的“通用”项目中创建一堆共享的部分视图,但是创建 20 个 cshtml 文件似乎有点开销,每个文件都包含非常小的部分 html。
我知道我可以创建一个标准的辅助方法static string GenerateAPieceOfHtml(this HtmlHelper helper, ....)

有一阵子我以为我遇到了一个可以让我这样做的答案。但正如我在评论中所写,该代码没有为我编译。

我希望我的问题很清楚:)

[更新]
正如 csharpsi 在评论中所问的那样。我确实尝试了另一篇文章中的代码,但它没有为我吐出任何 HTML。由于我开始认为该答案可能会起作用,因为它有 13 个赞成票,所以我决定再试一次。
我再次没有得到任何输出,但后来我尝试了一点不同。成功!
我正在尝试这个(它不会在页面上吐出任何 html):

@{ new Test().DoSomething(Model); }

这是可以工作的版本:

@{
  var html = new Test().DoSomething(Model);
  @html
}  

其他有效的版本:

@(new Test().DoSomething(Model))

这个问题我该怎么办?删除它?自己写答案?

4

1 回答 1

0

无论如何,您为什么要为此使用剃须刀助手?Razor 助手是一种特定的视图引擎黑客,您的应用程序不应该在很多地方(即使在不同的网站之间)依赖它们。在这种情况下,一定要使用标准的 MVC 方式——HTML 助手。这些你可以很容易地在网站之间共享,例如你可以让你自己的类库充满它们。

于 2011-10-18T11:19:14.813 回答