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

标签 razor

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

相关文章:

c# - cshtml selectlistitem获取选项值而不是下拉值

c# - MVC4/我想要的是局部 View 吗?

asp.net-mvc-3 - 如何在 MVC (Razor) 中对部分 View 进行属性编码

@Html.ActionLink 中未调用 Javascript

c# - 为什么我的 .cshtml 页面需要定义内容?

c# - 如何在表单中呈现列表项?

c# - 将 Razor 代码放入 JavaScript var 中

asp.net-mvc - 从 MVC Controller 调用 Web API 来构建和传递模型以查看

javascript - 获取 Html.TextBoxFor 字段的 HTML id

asp.net-mvc - asp.net razor中有类似eval()的函数吗?