haf*_*rje 5 c# asp.net-mvc lambda razor
是否可以使用Razor语法定义lambda表达式(delegate,Action,Func <>)的内容,以便在视图中执行此模型方法时,它将插入Razor内容?
这样做的目的是让我们的开发人员能够定义他们自己的自定义内容,以便插入CustomControl视图中的特定点.
以下是模拟我当前布局的精简示例代码.焦点的特定部分是RenderSideContent方法定义及其执行调用.
Index.cshtml
@model My.PageModel
@My.CustomControl(new CustomControlModel
{
AreaTitle = "Details",
RenderSideContent = () =>
{
<div>
@using (My.CustomWrapper("General"))
{
My.BasicControl(Model.Controls[0])
}
</div>
}
})
Run Code Online (Sandbox Code Playgroud)
CustomControl.cshtml
<div>
@Model.AreaTitle
<div class="my-custom-content">
@Model.RenderSideContent()
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
是和不是。不,您不能像这样向它提供自定义 Razor,因为在这种情况下,您正在处理直接的 C#,而类似的东西<div>不是有效的 C#。但是,您可以在 lambda 中构建一个IHtmlStringor对象,然后返回该对象。MvcHtmlString
但是,您将需要创建返回HTML 与呈现HTML 的自定义控件版本。基本上,想想Html.Partialvs Html.RenderPartial。前者实际上写入响应,而后者仅返回一个MvcHtmlString可以随意呈现到页面的响应。
| 归档时间: |
|
| 查看次数: |
613 次 |
| 最近记录: |