相关疑难解决方法(0)

剃刀 - 如何将内容呈现为变量

如何在Razor中将一段Html渲染成变量?在Spark我曾经写过以下代码:

<content var="t">
    <a class="tab" href="">Tab name</a>
</content>

<content var="tc">
    <div class="tabcontent">
        <p>Here goes tab content</p>
    </div>
</content>

!{tabs(t, tc)}
Run Code Online (Sandbox Code Playgroud)

两个变量被传递给一个宏,该宏将内容完美地包装到选项卡表中.

在Razor中做同样事情的最佳方法是什么?

更新:我想我明白了..

在Razor中,@<text>...</text>构造可以是用户生成lambda表达式,可以在以后重用,这是将一段HTML分配给变量的扩展等价物.上面的例子可以通过以下方式实现:

Func<int, object> t =
    @<text>
        <a class="tab" href="">Tab name</a>
    </text>;

Func<int, object> tc =
    @<text>
        <div class="tabcontent">
            <p>Here goes tab content</p>
        </div>
    </text>;


@tabs(t(0), tc(0))
Run Code Online (Sandbox Code Playgroud)

我只是想不通如何编写无参数lambdas(Func<object>).int上面两个lambda中的参数都是虚拟的.Razor似乎需要一个参数(并且已经创建了一个变量"item"来表示它在表达式中).

razor asp.net-mvc-3

15
推荐指数
3
解决办法
2万
查看次数

lambda函数是否可以包含Razor语法并在View中执行?

是否可以使用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)

c# asp.net-mvc lambda razor

5
推荐指数
1
解决办法
613
查看次数

标签 统计

razor ×2

asp.net-mvc ×1

asp.net-mvc-3 ×1

c# ×1

lambda ×1