2013-12-09 8 views
2

Я новичок в веб-разработке.Отобразить анонимный и анонимный контент в виде

Рассмотрим сайт, который пользователь может быть авторизованы (эф Facebook входа в систему)

Предполагая, что я знаю, что если пользователь вошел в систему или нет (я на моем пути, чтобы найти, как;) - это возможно что на одном и том же представлении (.cshtml) - часть элементов будет скрыта, если пользователь будет анонимным или будет обнаружен, если пользователь выполнит вход в систему? вы знаете - что-то вроде приятных атрибутов или условий (короче говоря, поставить логику на один и тот же взгляд и не управлять двумя .cshtml)

ответ

2

Я лично не поклонник того, если заявления на мой взгляд, так как они могут легко начать, чтобы получить суматоху, особенно если вы используете роли.

Так я предпочитаю делать это, чтобы этого избежать.

  1. Создание HTML помощника, содержащий логику, как это абстрагируются:

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

Если вы новичок:

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); 
     } 
    } 
} 
  • этот метод в моей точки зрения, как это вызов для веб-разработки код для расширения Helper может выглядеть немного подавляющим, но вы только в конце концов пишете, что один раз и e код, который вы используете для его вызова в другом месте, намного проще и доступен для повторного использования.

    Вот статья о Html помощников для получения дополнительной информации:

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

    Update

    забыл упомянуть эту технику тоже, что опять-таки позволяет избежать если заявления.

    Создайте два частичных изображения: _auth.cshtml & _unauth.cshtml.

    Создать действие, которое проверяет, является ли проверка подлинности пользователя & возвращает соответствующий частичный т.е.

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

    Затем вызовите действие из вашей точки зрения, как это:

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

    Это также может быть использован проверять роли и возвращать разные частичные.

  • +0

    Благодарим за ответы и попробуем их, и вы скоро узнаете. Наверное, здесь нет лучшей практики? как какой-то шаблон веб-дизайна здесь? – user1025852

    +0

    Личный выбор действительно, дайте им попробовать попробовать в решении, которое вы предпочитаете.:) – hutchonoid

    +0

    Я полностью забыл обновленный метод в своем ответе. Я считаю, что это лучше, чем утверждение if. :) – hutchonoid

    2

    Да, представления могут иметь логику.

    Ниже приведен пример кода, отображающего различный контент для пользователя в зависимости от того, вошли ли они в систему или нет.

    @if (User.Identity.IsAuthenticated) 
    { 
        <p>Welcome, @User.Identity.Name!</p> 
    } 
    else 
    { 
        <p>Welcome, anonymous!</p> 
    } 
    
    Смежные вопросы