【问题标题】:Wrap code in MVC Razor在 MVC Razor 中包装代码
【发布时间】:2018-01-03 11:17:46
【问题描述】:

对于 ASP.NET MVC Razor 视图中的长行 C# 代码,如何将代码包装到下一行?如果我添加回车,它会将代码呈现为 HTML。

编辑:这是我要包装的代码示例。在最后一行,添加的方法调用开始在屏幕外运行,我想将.WithAjax(true) 之类的内容带到下一行。

@Html.Grid(stuff).Columns(columns =>
{
    //stuff
}).Sortable().Filterable().WithMultipleFilters().WithPaging(WebSettings.DefaultPageSize)
  .WithAjax(true).Exportable(true)

【问题讨论】:

  • 看来,如果你在圆括号内添加一个 CR 就可以了,但如果你在句点之前换行就不行了
  • 您能举例说明您想要的结果吗?
  • 我用一个例子编辑过
  • 好的。检查我的答案。
  • 把它们放在你的控制器中是正确的答案。您的视图不应包含任何代码块,当然也不应包含大代码块。

标签: c# asp.net-mvc razor


【解决方案1】:

您可以使用@{ } 语法将“Razor 代码块”括起来。内容不会被渲染,但里面声明的变量可以被页面的其余部分访问。

@{
    string longMessage = "Lorem ipsum dolor sit amet, consectetur " +
        /* these linebreaks will not be part of the string variable */ +
        "adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna.";
} 

@* Now render the string variable declared in the code block *@
<p>@longMessage</p>

Razor syntax for ASP.NET Core

编辑

对于您的具体代码:

 @{
    // assign the IHtmlString created by the HTML Helper to a variable
    var grid = Html.Grid(stuff).Columns(columns =>
        {
          //stuff
        }).Sortable().Filterable().WithMultipleFilters()
        .WithPaging(WebSettings.DefaultPageSize)
        .WithAjax(true).Exportable(true));
 }

@* now render the variable content *@
@grid

【讨论】:

  • 我可以确认大括号方法不适用于我的示例 - 它需要返回值
  • 如果将输出分配给一个变量然后渲染这个变量应该仍然有效,请参阅我的编辑。
【解决方案2】:

你可以像这样使用@()

@(Html.Grid(stuff).Columns(columns =>
{
//stuff
}).Sortable().Filterable().WithMultipleFilters()
  .WithPaging(WebSettings.DefaultPageSize)
  .WithAjax(true).Exportable(true))

这叫Explicit Expression

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-29
    相关资源
    最近更新 更多