Member 13174280 Ответов: 3

Список возвращаемых значений строки


Я пытаюсь получить результат списка ImageDescr, видимый на всей странице.
например: я нажимаю кнопку и считываю индекс (n) списка ImageDescr, чтобы отобразить значение.

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

<pre>protected void Page_Load(object sender, EventArgs e)
 {
    ....
    ImageDescription ImageDescr = new ImageDescription();
   
    //ImageDescr is declared public in the class ImageDescription
    //after execute not see the element ImageDescr = null
    //
 }


Класс для полного списка , чтение строки из каталога

public class ImageDescription
    {
        private string virtualPath;
        private string physicalPath;

        public List<string> ImageDescr { get; set; }

        public ImageDescription()
        {
            // from other class
            PathImages pImg = new PathImages();
            virtualPath = pImg.path1;
            physicalPath = pImg.path2;

            List<string> ImageDescr = new List<string>();

            try
            {
                var imagesFolder = new DirectoryInfo(physicalPath);
                foreach (var item in imagesFolder.EnumerateFiles())
                {
                    if (item is FileInfo)
                    {
                        //add virtual path of the image to the images list
                        ImageDescr.Add(string.Format("{0}/{1}", virtualPath, item.Name));
                    }
                }

                //the List ImageDescr is is correctly filled
            }
            catch (Exception ex)
            {
                //log exception
                //Logger.Log(ex.Message);
            }

        }        
    } 

3 Ответов

Рейтинг:
1

Member 13174280

public partial class _Default : System.Web.UI.Page
{
    .........
    public List<string> ImgDes = new List<string>();

 protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)
        {
          ............
          GetNameImage();
        }
    }


 protected void GetNameImage()
    {
        PathDesc = MapPath(virtualPath + "/" + "DescrImages.txt");

        if (File.Exists(PathDesc))
        {
            using (var sr = new StreamReader(PathDesc))
            {
                string line = "";
                while ((line = sr.ReadLine()) != null)
                {
                    NameImage.ImgName.Add(line);
                }

                sr.Close();
            }

        ImgDes = NameImage.ImgName.ToList();
    }

public static class NameImage
    {
        public static List<string> ImgName = new List<string>();

    }
}


Рейтинг:
1

Member 13174280

мое решение не идеально:
с помощью Scriptmanager + UpdatePanel
данные, хранящиеся в списке ImgDes теряется, когда я нажимаю на изображение DataList для выполнения других операций на той же странице

без UpdatePanel ImgDes оставаясь пригодным для использования в каждой части страницы.


Рейтинг:
0

OriginalGriff

Хм. Вы понимаете, что версия, которую вы заполнили, маскирует версию уровня класса:

public List<string> ImageDescr { get; set; }

        public ImageDescription()
        {
...
            List<string> ImageDescr = new List<string>();

            try
            {
...
                        ImageDescr.Add(string.Format("{0}/{1}", virtualPath, item.Name));
...
            }
         }
И это означает, что данные, которые вы заполнили, отбрасываются, когда конструктор существует, оставляя public версия ImageDescr unassigned и null?
Я бы посоветовал вам начать с соблюдения соглашений об именовании C# или присвоить значение вместо использования новой переменной:
        public List<string> ImageDescr { get; set; }

        public ImageDescription()
        {
...
            ImageDescr = new List<string>();

            try
            {


Member 13174280

ясно, что я не прав, иначе я бы не спрашивал.
минимальный пример был бы более конструктивным, к всеобщему благословению

OriginalGriff

Ты имеешь в виду ... точно такой же, как тот, что я вчера выложил?

johannesnestler

таким образом, вы не знаете правил определения области видимости переменных - тему, которую каждый учебник по C# охватывает на своих первых страницах.Затем вы получаете идеальное описание проблемы от "босса" для вашего конкретного кода - и теперь вы думаете, что вам нужен более минимальный пример? Sry но WTF!

Member 13174280

То, что вы опубликовали вчера, не нужно понимать, в какую сторону идти или где основная ошибка.

OriginalGriff

- Простите? Хотите попробовать это на английском?