Member 8583441 Ответов: 2

Имя "sloginname" не существует в текущем контексте


я хочу получить имя пользователя из объекта сеанса в c# asp.net для этого я использовал условие if else на странице aspx домашней страницы. Но получение этой строки ошибки имя Входа не существует в текущем контексте как это решить

Что я уже пробовал:

<% if (Session["username"] == null)
{ %>
    <div class="col-md-3 col-4 sign-btn">
        <a href="#" data-toggle="modal" data-target="#signModalCenter">Signin</a>
    </div>
    <div class="col-md-3 col-4 sign-btn">
        <a href="#" data-toggle="modal" data-target="#registerModalCenter"> Register</a>
    </div>
    <div class="search col-md-2 col-4">
        <div class="mobile-nav-button">
            <button type="button" id="trigger-overlay"></button>
        </div>
        <div class="overlay overlay-door">
            <button class="overlay-close" type="button"></button>
            <form action="#" method="post" class="d-flex">
                 <input class="form-control" type="search" placeholder="Search here..." required="required" />
                 <button type="submit" class="btn btn-primary submit"></button>
            </form>
        </div>
    </div>
<%} %>
<% else
{ %>
    <div class="col-md-3 col-4 sign-btn">
        Welcome  <% =sLoginName %> <a href="/KB/answers/Logout.aspx" data-toggle="modal" data-target="#userModalCenter" id="ALogout"> Logout</a>
    </div>
<%} %>


С фоновым кодом:
публичная строка sLoginName = string.Пустой;

в загрузке страницы:
sLoginName = Session["username"].ToString();

Richard Deeming

Похоже, ты заново изобретаешь колесо. ASP.NET уже есть совершенно хорошие встроенные системы аутентификации и авторизации. И если вы используете их, вы также можете использовать удобные элементы управления, такие как LoginView[^] и Имя пользователя[^], которые обрабатывают большую часть шаблонного кода для вас.

2 Ответов

Рейтинг:
10

MadMyche

Другим вариантом было бы определить sLoginName на странице и удалите ее из Page_Load

      </form>
    </div>
  </div>
<% }
else
{
    string sLoginName = Session["username"].ToString();
%>
    <div class="col-md-3 col-4 sign-btn">
        Welcome  <% =sLoginName %> <a href="Logout.aspx" data-toggle="modal" data-target="#userModalCenter" id="ALogout">class="fa fa-sign-out"> Logout</a>
    </div>

Это может быть не идеально, но это может произойти в крайнем случае


OriginalGriff

*кашель* ... != null *кашель*

MadMyche

Фелдеркарб. Исправлено

Member 8583441

Большое спасибо сэр проблема решена из этого решения мой +5 голосов к этому решению

MadMyche

Добро пожаловать. Как я уже сказал, это не идеальное решение, а просто исправление для этой конкретной страницы. Ответ от OriginalGriff был бы предпочтительнее, если вы собираетесь работать с этим на нескольких страницах, это скорее повязка

Member 8583441

Я уже пробовал этот путь раньше сам вот почему я не сделал решения после того как получил решение от вас проблема решена спасибо еще раз

Рейтинг:
1

OriginalGriff

Убедитесь, что определение sLoginName является частью определения класса страницы, а не в дочернем классе или общем классе:

public partial class MyPage: System.Web.UI.Page
    {
    public string sLoginName = string.Empty;

    protected void Page_Load(object sender, EventArgs e)
        {
        sLoginName = Session["username"].ToString();
        }
    }
Если это не исправит ситуацию, скопируйте и вставьте фактическое сообщение об ошибке и связанную с ним информацию вместо того, чтобы перефразировать его.


Member 8583441

Это то, что я пробовал, вот почему я получил эту ошибку