我想要做的是能够在 .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”,因为它不是委托(delegate)类型
我是否使用了错误的论点类型,还是需要重新考虑整个概念?
解决方案
感谢下面的 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>
.
关于razor - 如何使用包含 Razor 标记的内容作为方法的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8198630/