2012-01-13 11 views
4

(ビュー)に(if)および(else)ステートメントを作成できません。声明の目的は、次のコードを非表示にすることです:ビューまたはコントローラ内の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; 

これは歓迎されるであろう実行する方法上の任意のアドバイス。

答えて

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

はいはい、必要に応じて質問に回答します。 !とは何ですか?文字列の意味の前に? –

+0

これは否定演算子であり、 "not"を意味します。だからその声明では、私は "ない場合は(文字列はnullまたは空です)、divを表示する"と言っている。 –

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

+0

@santiagoITうん、それを逃した。今更新されました。ありがとう。 – Maheep

+0

ViewBag.CountRecordsをテストする方が良いかもしれません。 Iamがコードを正しく読み込むと、ViewBag.searchが空の場合、ErrorSearchビューが表示されます。 –

関連する問題