asp.net-mvc - Razor - 在没有 Render() 和没有编码的情况下渲染

标签 asp.net-mvc razor telerik telerik-grid

有人可以解释以下是如何实现的。 Telerik Grid 组件将使用以下代码生成非编码 HTML:

@(Html.Telerik().Grid(Model)
        .Name("Grid")
        .DataKeys(keys => keys.Add(c => c.ProductID))
        .DataBinding(dataBinding => dataBinding.Server()
            .Select("ColumnSettings", "Grid")
            .Update("ColumnSettings_Save", "Grid")
            .Delete("ColumnSettings_Delete", "Grid"))
        .Columns(columns =>columns.LoadSettings((IEnumerable<GridColumnSettings>)ViewData["Columns"]))
        .Sortable()
)

这大概是因为方法调用被包裹在“@(....)”中。每当我使用自己的组件尝试此操作时,结果都会被编码为 Html。我知道我可以使用 Render() 来输出 MvcHtmlString,然后我的 Html 没有被编码,但 Telerik 网格似乎在没有 .Render() 的情况下实现了它。

谁能给我解释一下这个 secret ?

最佳答案

@( ) 语法只允许此命令跨越多行(否则会错误地将换行符解释为语句的结尾)并且不会影响编码。

你是对的 - 他们正在输出一个 MvcHtmlString ,它避免了自动 Razor 编码。

更具体地说,所有这些方法都是 Builder 对象的一部分,这是一个流畅的接口(interface),可以从每次调用中返回自身。 Builder 本身实现了 IHtmlString ,这就是为什么 .Sortable() 调用或此链中的任何其他调用将呈现未编码的 HTML。

关于asp.net-mvc - Razor - 在没有 Render() 和没有编码的情况下渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6777331/

相关文章:

javascript - 带有 Nativescript-telerik-ui 滑动抽屉的toggleDrawerState

c# - 更新数据源后,Telerik 的 RadListView 未绘制项目

c# - 应如何配置 MVC Web 应用程序才能与 Azure 存储配合使用?

c# - 检查当前请求是否来自 httpmodule 中的 mvc 页面

asp.net-mvc - 用于 MVC 不显眼的远程验证的事件 Hook

c# - @Html.DropDownListFor如何设置默认值

c# - 如何为枚举创建 EditorTemplate?

javascript - 当鼠标悬停在图像上时显示超链接和弹出窗口!

asp.net - 在 Application_BeginRequest 期间检查静态文件?

razor - 在 .Net Core 中导航到另一个文件夹中的页面