Как только вернуть содержимое HTML-тела с бритвой? - PullRequest
0 голосов
/ 05 апреля 2019

У меня есть страница, и я хочу условно вернуть только содержимое тега body.Условие: ViewBag.BodyOnly

Я пробовал следующее, но я получаю The if block is missing a closing "}" character. Make sure you have a matching "}" character for all the "{" characters within this block, and that none of the "}" characters are being interpreted as markup ошибку:

@if (ViewBag.BodyOnly) {

<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Title</title>
</head>
<body>

}
    <div>this</div>
    <div>that</div>

@if (ViewBag.BodyOnly) {

</body>
</html>

}

Чего мне здесь не хватает?

Ответы [ 2 ]

1 голос
/ 05 апреля 2019

Проблема в том, что вы думаете о HTML с точки зрения тегов, когда вам нужно думать о нем с точки зрения узлов.

Когда вы делаете что-то вроде этого:

@if (something) {
     <html>
}

Ваш оператор if отсекает первую половину узла, а остальная его часть не учитывается.

Чтобы сделать то, что вы пытаетесь достичь, выделите часть тела, а затем используйте это в двух местах:

@helper Body()
{
        <div>this</div>
        <div>that</div>
}

@if (ViewBag.BodyOnly)
{
    @Body()
}
else
{
    <!DOCTYPE html>
    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>Title</title>
    </head>
    <body>
        @Body()
    </body>
    </html>
}
1 голос
/ 05 апреля 2019

Лучше всего извлечь частичное содержимое внутри тега body, например:

@if (ViewBag.BodyOnly)
{
    <!DOCTYPE html>
    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>Title</title>
    </head>
    <body>
        @Html.Partial("_body")
    </body>
    </html>
}
else
{
    @Html.Partial("_body")
}

Затем в _body.cshtml:

<div>this</div>
<div>that</div>
...