在(视图)中创建(if)和(else)语句时遇到问题。声明的目的是隐藏以下代码:
<div id="clearbuton"><p>@Html.ActionLink("Clear", "")</p>
<p> @String.Format("Total of {0} results", ViewBag.CountRecords)
</div>
视图是隐藏代码的最佳位置还是控制器更适合任务。
只有在搜索查询不为null时才会显示代码。下面的代码是搜索表单。
@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;
欢迎任何有关如何实现这一目标的建议。
答案 0 :(得分: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>
}
现在推理 - 你应该在视图中放一个“if”语句来显示或隐藏HTML吗?是的,一点没错。这就是MVC中为视图设计的内容。控制器用于执行查询和计算结果计数以及操作数据,但是视图需要获取结果并实际呈现它们为HTML。因此,在这种情况下,我们依靠控制器来设置ViewBag.search
的值,然后基于此,视图可以显示或隐藏特定的HTML块。控制器不会(也不应该)知道HTML。
这会回答你的问题吗?
P.S.-如果您有兴趣,这里有一个关于Razor语法的方便快速参考:
http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx
答案 1 :(得分:3)
@if(!string.IsNullOrEmpty(ViewBag.Search))
{
<div id="clearbuton">
<p>@Html.ActionLink("Clear", "")</p>
<p> @String.Format("Total of {0} results", ViewBag.CountRecords)</p>
</div>
}