Если или еще заявление в поле зрения или контроллер - PullRequest
4 голосов
/ 13 января 2012

Не удается создать оператор (if) и (else) в (View).Цель этого утверждения состоит в том, чтобы скрыть следующий код:

<div id="clearbuton"><p>@Html.ActionLink("Clear", "")</p>

<p> @String.Format("Total of {0} results", ViewBag.CountRecords)

  </div>

Является ли представление лучшим местом для скрытия кода или контроллер лучше подходит для этой задачи.

Кодотображается только в том случае, если поисковый запрос не равен нулю.Приведенный ниже код является формой поиска.

@using (Html.BeginForm())
{  <div id="borderSearch">
    @Html.TextBox("searchString", "")
    </div>
    <input type="submit" value="Search News Archives" />
}

Некоторый код от контроллера:

 if (Request.HttpMethod == "GET")
            {
                searchString = search;
            }
            else if (searchString == "")
            {
                return RedirectToAction("ErrorSearch");
            }

            else
            {
                page = 1;
            }
            ViewBag.search = searchString;

Любые советы о том, как это сделать, будут приветствоваться.

Ответы [ 2 ]

5 голосов
/ 13 января 2012

ОК, я не уверен на 100%, полностью ли я понимаю ваш вопрос, но если я вас правильно слышу, вы не уверены, как поместить оператор if вокруг первого блока кода и / или вы должен сделать это.

Во-первых, вот "как" - вы просто используете @if (простите, если это кажется очевидным - я не пытаюсь оскорбить ваш интеллект):

@if (!string.IsNullOrEmpty(ViewBag.search))
{
    <div id="clearbuton"><p>@Html.ActionLink("Clear", "")</p>

    <p> @String.Format("Total of {0} results", ViewBag.CountRecords)</p>

    </div>
}

Теперь рассуждение - вы должны поместить выражение "если" в представление, чтобы показать или скрыть HTML? Да, конечно. Вот для чего предназначен вид в MVC. Контроллер предназначен для выполнения запросов и вычисления количества результатов и манипулирования данными, но именно представлению необходимо взять результаты и фактически отобразить их в HTML. Таким образом, в этом случае мы полагаемся на контроллер, чтобы установить значение ViewBag.search, а затем, основываясь на этом, представление может показать или скрыть определенный блок HTML. Контроллер не знает (и не должен знать) о HTML.

Это отвечает на ваш вопрос?

P.S.- Вот краткий справочник по синтаксису Razor, если вам интересно:
http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx

3 голосов
/ 13 января 2012
@if(!string.IsNullOrEmpty(ViewBag.Search))
{
    <div id="clearbuton">
        <p>@Html.ActionLink("Clear", "")</p>
        <p> @String.Format("Total of {0} results", ViewBag.CountRecords)</p>
    </div>
}

См. это сообщение в блоге от ScottGu

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