Я думаю о том, чтобы получить имена пользователей моего сайта, используя это, на мой взгляд (синтаксис Razor):
@MySite.Helpers.Utils.UserName
вот класс утилит:
public class Utils
{
static FormsIdentity id = (FormsIdentity)HttpContext.Current.User.Identity;
public static string UserName { get { return id.Ticket.UserData; } }
}
Есть ли потенциальные проблемы с этим кодом?
Причина, по которой я делаю это так, заключается в том, что я собираюсь хранить имя пользователя в поле пользовательских данных нового FormsAuthenticationTicket, когда пользователь входит в систему.
Я обрабатываю это так, потому что я использую facebook connect и хочу сохранить там идентификатор в поле имени пользователя в БД и их имена пользователей/полные имена в отдельной таблице.
поэтому моя логика для обработки имен пользователей facebook и зарегистрированных на моем сайте имен пользователей должна обрабатываться по-разному. После входа в систему я думаю обработать его там, а затем установить пользовательские данные в качестве фактического имени пользователя.
поэтому на всем сайте я могу просто получить имя вошедшего в систему пользователя, используя: @MySite.Helpers.Utils.UserName
это звучит нормально? будет ли проблемой тот факт, что это статическая переменная?
или есть лучший способ управлять этим? переменные сеанса может быть?
Благодарность
<namespaces>
вашего web.config:<namespaces><add namespace="YourNamespace"/></namespaces>
. Тогда во всех шаблонах можно было просто написать@Html.Username()
. Это простой метод расширения классаHtmlHelper
. И если вы определите его в пространстве именSystem.Web.Mvc.Html
, ничего не поделаешь: он будет доступен автоматически. 23.12.2010<add namespace="MySite.Helpers"/>
в раздел пространств имен вашего web.config? Убедитесь, что класс является общедоступным статическим и что метод расширения является общедоступным статическим, точно так же, как в моем примере. Если у вас по-прежнему возникают проблемы с написанием собственного помощника, вы можете ознакомиться со следующим подробным пошаговым руководством: asp.net/mvc/tutorials/creating-custom-html-helpers-cs и особенно вторую часть, посвященную методам расширения. Также попробуйте перекомпилировать и запустить приложение хотя бы один раз. Это может быть какая-то неприятная ошибка VS в режиме разработки. 23.12.2010