如果或者在视图或控制器中声明

Daz*_*Aza 4 asp.net-mvc-3

在(视图)中创建(if)和(else)语句时遇到问题.该语句的目的是隐藏以下代码:

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

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

  </div>
Run Code Online (Sandbox Code Playgroud)

视图是隐藏代码的最佳位置还是控制器更适合任务.

仅当搜索查询不为空时才显示代码.下面的代码是搜索表单.

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

来自控制器的一些代码:

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

            else
            {
                page = 1;
            }
            ViewBag.search = searchString;
Run Code Online (Sandbox Code Playgroud)

有关如何实现这一目标的任何建议都将受到欢迎.

Bri*_*ers 5

好吧,如果我完全理解你的问题,我不是百分百肯定,但是如果我听到你的话,你不确定如何在第一段代码周围加上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>
}
Run Code Online (Sandbox Code Playgroud)

现在推理 - 你应该在视图中放一个"if"语句来显示或隐藏HTML吗?是的,一点没错.这就是MVC中为视图设计的内容.控制器用于执行查询和计算结果计数以及操作数据,但是视图需要获取结果并实际它们呈现为HTML.因此,在这种情况下,我们依靠控制器来设置ViewBag.search基于此的值,视图可以显示或隐藏特定的HTML块.控制器不会(也不应该)知道HTML.

这是否回答你的问题?

PS-如果您有兴趣,可以使用Razor语法快速参考:http:
//haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx