Совместное использование декларативного помощника для нескольких британских веб-проектов MVC - PullRequest
1 голос
/ 18 октября 2011

Допустим, у меня есть 2 веб-проекта MVC (web1 и web2) и 1 проект, содержащий общие представления (общие) ( с использованием разоргенератора David Ebbo )
У web1 и web2 есть файл test.cshtml. Несколько блоков кода в обоих файлах test.cshtml абсолютно одинаковы.
Я пытаюсь выяснить, возможно ли разделить декларативный помощник (@helper) между несколькими файлами cshtml, которые находятся в РАЗЛИЧНЫХ проектах. Поэтому размещение файла cshtml в моем App_Code не помогает (мне нужно было бы иметь 1 в каждом веб-проекте, что явно не то, что я хочу).
Я знаю, что мог бы создать несколько общих частичных представлений в моем «общем» проекте, но, кажется, довольно сложно создать 20 файлов cshtml, каждый из которых содержит очень небольшую часть html.
Я знаю, что могу создать стандартный вспомогательный метод (static string GenerateAPieceOfHtml(this HtmlHelper helper, ....)), но там я теряю удобство написания HTML, как вы можете сделать это в файле cshtml.

Некоторое время я думал, что Я наткнулся на ответ, который позволил бы мне это сделать . Но, как я написал в комментарии, этот код для меня не компилировался.

Надеюсь, мой вопрос понятен :)

[Update]
Как просит csharpsi в комментарии ... Я попробовал код из другого поста, но он не выплевывал HTML для меня. Так как я начал думать, что этот ответ, вероятно, должен сработать, так как в нем 13 голосов, я решил дать ему вторую попытку ..
Снова я не получил никакого вывода, но потом я попробовал это немного по-другому .. и успех!
Я пытался это (что не выдает html на странице):

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

Это версия, которая работает:

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

Другая версия, которая работает:

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

Что мне делать с этим вопросом? Удали это? Напиши ответ сам?

1 Ответ

0 голосов
/ 18 октября 2011

Почему вы пытаетесь использовать для этого бритвенный помощник?Помощники Razor - это хакер, использующий один конкретный вид, ваше приложение не должно полагаться на них во многих местах (даже на разных сайтах).В этом случае обязательно используйте стандартный способ MVC - HTML Helper.Этими вы можете легко обмениваться между веб-сайтами, например, вы можете сделать свою собственную библиотеку классов полной.

...