Проблема в том, что тег привязки оценки автоматически вызывает метод ToString () для всего, что он находит в объекте Session
.
Итак, если:
var SesVar = '<%= Session("MySessionVariable").ToString() %>';
имеет значимую реализацию (например, это строка или тип значения), тогда вы получите то, что ожидаете.
Однако в вашем примере вы храните экземпляр класса LetterReason
, для которого вызов виртуального метода object
ToString () по умолчанию вернет имя класса.
Ответ зависит от того, что вы хотите сделать с результатом. Вы не можете тривиально использовать объект .NET в JavaScript, данные проходят через границу домена (то есть за пределы вашего сайта .NET и через сеть, а затем в DOM HTML-страницы).
Вам нужно каким-то образом сериализовать его, возможно, JSON. Используйте такой подход: Можете ли вы создать экземпляр объекта из JSON в .NET?
Это если вам нужно все богатство класса. Если вы просто ищете конкретные свойства / методы, вы можете получить:
var reasonCode = '<%= ((LetterReason)Session("MySessionVariable")).ReasonCode() %>';
var reason = '<%= ((LetterReason)Session("MySessionVariable")).Reason() %>';
Итак, здесь вам нужно привести ваш экземпляр сеанса к вашему конкретному классу (обычные .net System.Object
хранятся в сеансах, что дает вам максимальную гибкость), а затем взять желаемое свойство.
Однако сериализация объекта из .NET в JSON будет гораздо лучшим решением, поскольку она гибкая и поддерживаемая.