如何使用包含剃刀标记的内容作为方法的参数?

我想要做的是能够在.cshtml文件中编写与razor样式的标记和方法混合的
javascript,并将其发送到单独的方法以供以后使用.

我的.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:无法将lambda表达式转换为’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
        );

最佳答案 你想要拿一个
inline helper.

你需要接受一个Func< Something,HelperResult>.

点赞