Как использовать содержимое, содержащее разметку бритвы, в качестве параметра для метода? - PullRequest
4 голосов
/ 20 ноября 2011

Я пытаюсь написать javascript, смешанный с разметкой и методами в стиле бритвы, в файле .cshtml и отправить его в отдельный метод для последующего использования.

Мой .cshtml выглядит кое-чтокак это:

@{SomeClass.SaveForLater(@<script type="text/javascript">window.alert('@Model.SomeParamter')}</script>);

И внутри класса SomeClass:

public static void SaveForLater(HtmlString str) {
    // will be using str.ToString() here and save the string output for use later on.
}

Но я получаю следующее сообщение об ошибке:CS1660: Невозможно преобразовать лямбда-выражение в тип «System.Web.HtmlString», поскольку оно не является типом делегата

Я использую неверный тип для аргумента или мне нужно переосмыслить всю концепцию?

Решение Благодаря SLaks ниже я закончил тем, что сделал это:

public static void SaveForLater<T>(Func<T, HelperResult> template, dynamic model)
{
    // template(model).ToHtmlString()
}

Используя это так:

 @{SomeClass.SaveForLater<SomeModel>(
        @<script type="text/javascript">window.alert('@Model.SomeParamter')</script>,
        Model
        );

1 Ответ

2 голосов
/ 20 ноября 2011

Вы пытаетесь воспользоваться встроенным помощником .
Вам необходимо принять Func<Something, HelperResult>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...