如何使用包含razor标记的内容作为方法的参数?
我试图做的是能够在.cshtml文件中编写混合了razor样式的标记和方法的javascript,并将其发送到一个单独的方法供以后使用 My.cshtml看起来像这样:如何使用包含razor标记的内容作为方法的参数?,razor,Razor,我试图做的是能够在.cshtml文件中编写混合了razor样式的标记和方法的javascript,并将其发送到一个单独的方法供以后使用 My.cshtml看起来像这样: @{SomeClass.SaveForLater(@<script type="text/javascript">window.alert('@Model.SomeParamter')}</script>); @{SomeClass.SaveForLater<SomeModel>(
@{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:你想要的任何东西。它将被传递到动作;请参阅我的博客文章。如果你不想传递任何东西,只需使用对象即可。