У меня есть веб-приложение ASP.net, использующее С# в качестве серверной части. У меня есть класс уникальных переменных, к которым я хочу получить доступ на моей странице .aspx.
Я видел отличный пример того, как это сделать на сайте Microsoft: https://forums.asp.net/t/2127062.aspx?How+to+access+the+class+declared+Public+Variable+to +ASPX+Страница+
Вот мой частичный код для страницы Action.aspx:
<%@ Page Language = "C#" AutoEventWireup = "true" CodeBehind = "Action.aspx.cs" Inherits = "Admin_Test Action" %>
<% @Import Namespace = "TestClass" %>
<!DOCTYPE html>
<html xmlns = "https://www.w3.org/1999/xhtml" xml:lang = "en" lang = "en">
<head>
и файл TestClass.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Admin_Test
{
public class TestClass
{
public string ItemType = "TEST VALUE";
}
}
На странице .aspx я импортирую класс через имя класса. Однако, когда я запускаю код, я получаю сообщение «Тип или имя пространства имен« TestClass »не удалось найти (вам не хватает директивы использования или ссылки на сборку?)
Файл TestClass.cs находится в той же папке, что и файлы Action.aspx/Action.aspx.cs. Он должен его видеть, но почему-то не видит.
Любая помощь будет оценена по достоинству.
Эрик
Приложение - Неверный код для ответа на Orvar...
<%@ Page Language = "C#" AutoEventWireup = "true" CodeBehind = "Action.aspx.cs" Inherits = "Admin_Test.Visual.Content.Action" %>
<% @Import Namespace = "Admin_Test" %>
<!DOCTYPE html>
<html xmlns = "https://www.w3.org/1999/xhtml" xml:lang = "en" lang = "en">
<head>
<%-- <meta http-equiv = "X-UA-Compatible" content = "IE=7, chrome=1"/>--%>
<meta http-equiv = "x-ua-compatible" content = "IE=edge" />
<meta http-equiv = "content-type" content = "application/xhtml+xml; charset=utf-8" />
<meta http-equiv = "Expires" content = "0" />
<meta http-equiv = "Cache-Control" content = "no-cache" />
<meta http-equiv = "Pragma" content = "no-cache" />
<meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" />
<script type = "text/javascript" src = "../js/jquery-1.4.2.min.js"></script>
<script type = "text/javascript" src = "../js/jquery.validate.js"></script>
<script type = "text/javascript" src = "../js/ui/ui.core.js"></script>
<script type = "text/javascript" src = "../js/ui/ui.datepicker.js"></script>
<link rel = "stylesheet" type = "text/css" href = "itemtypes/CommonCSS/valueadded.css" />
<link type = "text/css" href = "../js/ui/themes/base/ui.all.css" rel = "stylesheet" />
<title></title>
<script type = "text/javascript">
var bValid = false;
var ItemType = UniqueVar.itemtype;
Имя файла класса — UniqueVar. Имя его класса — UniqueVar. Его пространство имен — Admin_Test.





Похоже, вам нужно добавить пространство имен вместо имени класса в импорт, как показано ниже:
<% @Import Namespace = "Admin_Test" %>
Возможно, вместо этого можно получить значение, подобное следующему. Поместив значение в файл кода программной части страницы:
public partial class _Default : System.Web.UI.Page
{
protected string ItemType;
protected void Page_Load(object sender, EventArgs e)
{
ItemType = "TEST VALUE";
}
}
<script type = "text/javascript">
////Getting variable from asp.net code behind
alert("<%=ItemType%>");
</script>
Orvar, Не получилось. Я разместил ошибочный код .aspx в исходном сообщении. В Visual Studio, когда я набираю UniqueVar. intellisense видит все в этом классе, включая тип элемента. Однако, когда я запускаю свой код, я получаю сообщение об ошибке «UniqueVar» не определено. Я не уверен, что понимаю, почему это происходит, поскольку В.С. видит класс. Есть идеи?
Хммм, можешь опубликовать фактическое сообщение об ошибке? Спасибо.
Что, если вы создадите свойство get, возможно, это сработает... например public string ItemType{ get; set; }
Та же проблема с использованием геттеров и сеттеров. Фактическое сообщение об ошибке: 'UniqueVar' is undefined, строка 30, то есть строка: var ItemType = UniqueVar.itemtype;
Я пытаюсь получить значения со страницы aspx.cs на странице .aspx. Я делаю это, объявляя общедоступные переменные в разделе Class на странице aspx.cs. Это прекрасно работает, так как доступ к этим переменным можно получить со страницы .aspx. Проблема в том, что когда происходит изменение страницы, код снова выполняет итерацию по классу и повторно инициализирует общедоступные переменные. Нет строки запроса для обновления этих общедоступных переменных, поэтому их значение теряется. Я думал, что если я создам отдельный класс с переменными на отдельной странице .cs, переменные не будут стираться. Как получить доступ к этим переменным на странице .aspx?
Извините, приятель, не знаю, в чем проблема :/ Вы смотрели на SessionState? Или, возможно, сохранить значение в базе данных?
Я мог бы сохранить значения в состоянии сеанса, но как мне получить их на странице .aspx?
Я обновил свой ответ. Вы можете добавить переменную в файл кода программной части страниц и получить к ней доступ в html с помощью кода, который я добавил. Пожалуйста, попробуйте и дайте мне знать, как это происходит.
Спасибо iceCode, «добавить переменную в файл кода программной части страниц и получить к ней доступ в html» — это именно то, что я сделал.
IceCode, Как мне отметить ответ как полезный? Я могу проголосовать, и я принял ваш ответ (зеленая галочка), но не вижу других вариантов, которые можно было бы отметить как полезные.
Спасибо. Я провел быстрый тест, и он, похоже, сработал. Я могу подтвердить в понедельник, когда я вернусь на работу.