2013-12-09 1 views
2

저는 웹 개발에 초보자입니다.보기에 인증 된 익명 콘텐츠 표시

사용자가 로그인 할 수있는 사이트를 고려 (EF 페이스 북 로그인에서)

나는 사용자가 (나는 방법을 찾아 내 방식에있어) 로그인 또는하지 않은 경우 알고 가정 - 그것은 가능 동일한보기 (.cshtml) - 사용자가 익명이면 요소의 일부가 숨겨 지거나 사용자가 로그인 한 경우 표시됩니다. 좋은 속성이나 조건과 같은 것 (간단히 말해 논리를 동일한보기에두고 두 개의 .cshtml을 관리하지 않음)

답변

2

나는 개인적으로 내보기에 문을 당신이 역할을 사용하는 경우 특히 그들은 쉽게, 복잡 얻을 시작할 수 있다면 가진의 팬이 아니에요.

이렇게하면 피하는 것이 더 좋습니다. 이 멀리 추상화처럼

  1. 하는 논리가 포함 된 HTML 도우미를 만듭니다

    namespace System.Web.Mvc 
    { 
        public static class HtmlHelperExtensions 
        { 
         public static MvcHtmlString UserMessage(this HtmlHelper htmlHelper) 
         { 
         string welcomeFormat = "Welcome, {0}"; 
         var isAuthenticated = htmlHelper.ViewContext.HttpContext.User.Identity.IsAuthenticated; 
         var name = htmlHelper.ViewContext.HttpContext.User.Identity.Name; 
         var message = isAuthenticated ? string.Format(welcomeFormat, name) : string.Format(welcomeFormat, "anonymous!"); 
         return new MvcHtmlString(message); 
         } 
        } 
    } 
    
  2. 전화 같은 내보기 내에서이 방법

    <p>@Html.UserMessage()</p> 
    

당신이 새로운 경우를 헬퍼 확장을위한 코드가 웹 개발에 다소 압도적으로 보일지 모르지만, 결국 한 번만 쓰고 결국에는 다른 곳에서 호출하는 데 사용하는 코드는 훨씬 간단하고 재사용 할 수 있습니다.

http://www.codeproject.com/Articles/649394/ASP-NET-MVC-Custom-HTML-Helpers-Csharp

업데이트

도이 기술을 언급하는 것을 잊었다 다시 경우 문을 방지 : 여기

는 추가 정보를 html로 헬퍼에 대한 기사입니다.

두 개의 부분보기를 작성하면 _auth.cshtml & _unauth.cshtml이 표시됩니다. 이것은 또한 사용할 수 있습니다

@Url.Action("FooContent", "Contoller"); 

:

사용자가 & 반환

public ActionResult FooContent() 
{ 
    if (User.Identity.IsAuthenticated) 
    { 
     return PartialView("_auth"); 
    } 
    else 
    { 
     return PartialView("_unauth"); 
    } 
} 

는 다음과 같은보기 내에서 작업을에서 호출 관련 부분, 즉 인증되면 확인 작업을 만들기 역할을 확인하고 다른 부분을 반환합니다.

+0

감사합니다. 두 답변을 모두 사용해보고 곧 사용해 보겠습니다. 여기에 모범 사례가 없다고 생각하니? 여기에 몇 가지 웹 디자인 패턴이 있습니까? – user1025852

+0

개인적인 선택은 실제로 당신이 선호하는 솔루션을 시도해보십시오.:) – hutchonoid

+0

완전히 내 대답에 업데이트 된 방법을 잊어 버렸습니다. 나는 if 문보다 더 나은 방법이라고 생각한다. :) – hutchonoid

2

예,보기에는 논리가있을 수 있습니다.

다음은 로그인 여부에 따라 사용자에게 다른 콘텐츠를 표시하는 코드 예제입니다.

@if (User.Identity.IsAuthenticated) 
{ 
    <p>Welcome, @User.Identity.Name!</p> 
} 
else 
{ 
    <p>Welcome, anonymous!</p> 
} 
관련 문제