2012-01-13 110 views
4

无法在(视图)中创建(if)和(else)语句。该声明的目的是隐藏下面的代码:If or else in view or controller

<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; 

如何做到这一点会受到欢迎任何意见。

回答

5

OK,我不是100%肯定,如果我完全理解你的问题,但如果我正确地听你,你不知道if语句如何把一个绕第一部分代码和/或是否应该这样做。

首先,这里的“如何做” - 你只需要使用@if(原谅我,如果这似乎obvious--我不是想侮辱你的智商):

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

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

    </div> 
} 

现在reasoning--应你在视图中放置一个“if”语句来显示或隐藏HTML?是的,一点没错。这就是MVC设计的视图。控制器用于查询和计算结果的计数以及处理数据,但是这种观点需要将结果和它们实际呈现为HTML。因此,在这种情况下,我们依靠控制器设置值ViewBag.search,然后基于此,视图可以显示或隐藏特定的HTML块。控制器没有(也不应该)了解HTML。

这是否回答你的问题?

PS-这里是如果你有兴趣剃刀语法速查手册:
http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx

+0

是根据需要回答问题。是什么 !之前字符串的意思 – 2012-01-13 03:23:30

+0

这是否定操作符,它的意思是“不”。所以在这个声明中我说“如果不是(字符串为空或空),显示div”。 – 2012-01-13 03:31:45

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> 
} 

this blog post from ScottGu

+0

使用string.IsNullOrWhitespace(ViewBag.Search)(.NET 4)或string.IsNullOrEmpty(ViewBag.Search)代替ViewBag.Search!=“” – santiagoIT 2012-01-13 02:49:04

+0

@santiagoIT没错,错过了。现在更新。谢谢。 – Maheep 2012-01-13 02:51:52

+0

测试ViewBag.CountRecords可能会更好。如果Iam正确读入代码,则当ViewBag.search为空时,将显示ErrorSearch视图。 – 2012-01-13 02:54:51