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