M. *_*ols 5 asp.net-mvc telerik telerik-grid razor
有人可以解释如何实现以下目标.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()
)
Run Code Online (Sandbox Code Playgroud)
大概这是因为方法调用包含在"@(....)"中.每当我用自己的组件尝试这个时,结果都是编码的Html.我知道我可以使用Render()输出MvcHtmlString,然后我的Html没有编码,但Telerik网格似乎没有.Render().
谁能向我解释这个秘密?
@( ) 语法只允许此命令跨越多行(否则换行符将被错误地解释为语句的结尾),并且不会影响编码。
你是对的 - 他们正在输出一个 MvcHtmlString ,它避免了自动 Razor 编码。
更具体地说,所有这些方法都是 Builder 对象的一部分,这是一个从每次调用中返回自身的流畅接口。Builder 本身实现了 IHtmlString,因此这就是为什么 .Sortable() 调用或此链中的任何其他调用都会呈现未编码的 HTML。