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

如何使用包含razor标记的内容作为方法的参数?,razor,Razor,我试图做的是能够在.cshtml文件中编写混合了razor样式的标记和方法的javascript,并将其发送到一个单独的方法供以后使用 My.cshtml看起来像这样: @{SomeClass.SaveForLater(@<script type="text/javascript">window.alert('@Model.SomeParamter')}</script>); @{SomeClass.SaveForLater<SomeModel>(

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

My.cshtml看起来像这样:

@{SomeClass.SaveForLater(@<script type="text/javascript">window.alert('@Model.SomeParamter')}</script>);
 @{SomeClass.SaveForLater<SomeModel>(
        @<script type="text/javascript">window.alert('@Model.SomeParamter')</script>,
        Model
        );
但我收到的是错误消息:
CS1660:无法将lambda表达式转换为类型“System.Web.HtmlString”,因为它不是委托类型

我使用的论点类型是错误的还是需要重新思考整个概念

解决方案 多亏了下面的SLaks,我最终做到了这一点:

public static void SaveForLater<T>(Func<T, HelperResult> template, dynamic model)
{
    // template(model).ToHtmlString()
}
public static void SaveForLater(Func模板,动态模型)
{
//模板(model.ToHtmlString())
}
像这样使用它:

@{SomeClass.SaveForLater(@<script type="text/javascript">window.alert('@Model.SomeParamter')}</script>);
 @{SomeClass.SaveForLater<SomeModel>(
        @<script type="text/javascript">window.alert('@Model.SomeParamter')</script>,
        Model
        );
@{SomeClass.SaveForLater(
@window.alert('@Model.someparameter'),
模型
);
您正试图采取行动。

你需要接受一个
Func

谢谢你给我指明了正确的方向,但是如果看我的例子,什么代表“某物”类?@MattiasHögnäs:你想要的任何东西。它将被传递到动作;请参阅我的博客文章。如果你不想传递任何东西,只需使用
对象即可。