gpt4 book ai didi

ASP.NET MVC 3 Razor 语法问题

转载 作者:行者123 更新时间:2023-12-02 18:09:59 25 4
gpt4 key购买 nike

当我使用部分 View (MVC3/Razor)时出现这个问题,但我确信 - 这是明显的 Razor 语法问题,与部分 View 没有直接关系。所以 - 我有部分 View Menu.cshtml ,完整标记为:

@model IEnumerable<SportsStore.WebUI.Models.NavLink>
@foreach(var link in Model)
{
@Html.RouteLink(link.Text, link.RouteValues);
}

没问题 - “父” View 将其称为 @{Html.RenderAction("Menu", "Nav");} 并且一切都像魔法一样工作。但是,如果我将 Menu.cshtml 编辑为:

@model IEnumerable<SportsStore.WebUI.Models.NavLink>
@foreach(var link in Model)
{
Html.RouteLink(link.Text, link.RouteValues);
}

(请参阅 - Html.RouteLink 之前没有“@”!)一切都崩溃了:现在 @{Html.RenderAction("Menu", "Nav");} 输出完全是空的,没有任何 HTML 标记。

想知道 - 两段代码有什么区别?我假设 foreach 之前的 @ 也会自动“放入”并应用于 Html.RouteLink 吗?那么——我错了吗?

最佳答案

语句前的@导致其被写入输出流。当您删除它时,您所做的只是在 Html 对象上调用一个方法。

@ 运算符的目的有两个。它可以用于将表达式输出到响应流,就像您在第一个示例中看到的那样。另一个功能是启动代码块。您可以使用 @foreach(var link in Model)

看到代码示例中使用的第二种行为

关于ASP.NET MVC 3 Razor 语法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5450596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com