我要做的是能够在.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
);