2012-01-13 67 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