Упорядочить блоки кода в представлении MVC 3 - PullRequest
2 голосов
/ 09 сентября 2011

У меня сложный вид (cshtml) в моем проекте MVC3.В зависимости от разных переменных, части этого кода должны отображаться в другом порядке.Как я могу отделить блоки кода Razor / HTML и «включить» их в нужную позицию?Ищите что-то вроде этого:

@{ CODEBLOCK 1
...
}

@{ CODEBLOCK 2
...
}

@if (bla==1) {
    include CODEBLOCK 1
    include CODEBLOCK 2
} else {
    include CODEBLOCK 2
    include CODEBLOCK 1
}

Я не хочу использовать HtmlPartial, так как я не хочу передавать ему все переменные, модель и другие вещи.

Ответы [ 4 ]

7 голосов
/ 09 сентября 2011

Вы можете использовать вспомогательные методы:

@helper CodeBlock1()
{
    ...
}

@helper CodeBlock2()
{
    ...
}

@if (bla==1) {
    CodeBlock1();
    CodeBlock2();
} else {
    CodeBlock2();
    CodeBlock1();
}

В качестве бонуса, это безопасный тип и допускает аргументы.

1 голос
/ 09 сентября 2011

А как насчет разделов макета?

http://weblogs.asp.net/scottgu/archive/2010/12/30/asp-net-mvc-3-layouts-and-sections-with-razor.aspx

@section CODEBLOCK1 {
...
}

@section CODEBLOCK2 {
...
}

@if (bla==1) {
    @RenderSection("CODEBLOCK1");
    @RenderSection("CODEBLOCK2");
} else {
    @RenderSection("CODEBLOCK2");
    @RenderSection("CODEBLOCK1");
}
0 голосов
/ 09 сентября 2011

Хотя мне нравится подход Мортена Кристиансена, другой подход, который я просто выброшу в качестве способа «перемещать вещи» на странице, - это использование jQuery для настройки того, что происходит.

Предполагается, что представление выглядит примерно так:

<div id = "div1">
   Something
</div>
<div id = "div2>
   Something Else
</div>

, а затем какой-то jQuery, чтобы определить, следует ли делать своп:

if (someCondition)
{
   $('#div2').insertBefore('#div1');
}

Опять же, я просто выбрасываю этоесть еще один возможный способ отрегулировать, который на первом месте, но мне, безусловно, нравится идея Мортена.

0 голосов
/ 09 сентября 2011

Вы пробовали Секции бритвы .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...