Проблема в том, что вы думаете о 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>
}