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

확인을 참조하십시오 코드의 첫 번째 블록 및/또는 사용자가 그렇게해야하는지 여부.

먼저, 여기은 "방법"- 당신은 @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> 
} 

나는 완전히 당신의 질문을 이해한다면 100 % 확실하지 않다,하지만 난 제대로 듣고있어 경우에, 당신이 주변에 if 문을 넣어하는 방법을 확실하지 않다, 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 뷰가 표시됩니다. –