Считать значение целочисленного сеанса в файле макета - PullRequest
1 голос
/ 14 апреля 2019

в _Layout файле, мне нужно прочитать данные переменной int из сеанса. Я могу читать строки очень легко, но целое число очень сложно.

Я использовал этот код для строки:

var sessionImg = new Byte[20];
bool imageStatus = Context.Session.TryGetValue("_Image", out sessionImg);

if (imageStatus)
{
    string result = System.Text.Encoding.UTF8.GetString(sessionImg); 
}

И для целого числа я преобразую Байт в строку, чем строку в Инт.

var ByteClientID = new Byte[20];
bool IdStatus = Context.Session.TryGetValue("_ClientID", out ByteClientID);

if (IdStatus)
{
    string result1 = System.Text.Encoding.UTF8.GetString(ByteClientID);

    int intSessionValue = 0;
    bool isConvertOK = Int32.TryParse(result1, out intSessionValue);

    if (isConvertOK)
    {
    ........
    }
}

Это работает, но мне не понравился этот код. Это не выглядит правильно. Context.Session.TryGetValue возвращает только байт .. Может ли кто-нибудь помочь мне с этим, пожалуйста?

Ответы [ 2 ]

2 голосов
/ 14 апреля 2019

Существует несколько методов расширения для ISession в пространстве имен Microsoft.AspNetCore.Http.Так что просто включите это пространство имен, и тогда вы можете просто использовать методы методы GetInt32 и GetString напрямую.

Это спасает вас от чтения данных сеансав байтах и ​​сначала преобразуя это в строку:

// using Microsoft.AspNetCore.Http;

string sessionImg = Context.Session.GetString("_Image");

int clientId = Context.Session.GetInt32("_ClientID");

Чтобы импортировать пространство имен в представлении Razor, вы можете использовать директиву @using:

@using Microsoft.AspNetCore.Http;

<p>Image value: @Context.Session.GetString("_Image")</p>
<p>Client id: @Context.Session.GetInt32("_ClientID")</p>
0 голосов
/ 14 апреля 2019

см. Эту ссылку: Как получить значение сеанса в файле макета в ASP.NET 5 MVC6

В ответе говорится: Имена между Context и HttpContext несколько сбивают с толку. Вы можете получить доступ к HttpContext в представлении, используя свойство Context:

@{ int x = Context.Session.GetInt32("test"); }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...