Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
 
NitroTol
0 / 0 / 0
Регистрация: 09.01.2016
Сообщений: 16
Завершенные тесты: 1
1

Ошибка при записи в value кнопки Id объекта с полученной колекции. Это всё в TagBilder

15.01.2019, 23:39. Просмотров 384. Ответов 2
Метки нет (Все метки)

Не могу понять причину такой ошибки.

TagBilder получает список объектов и с них формирует таблицу кнопок

обнаружил что при записи Id объекта в value кнопки записывается Id только первого объекта с списка, независимо от количества объектов в списке. хотя имена объектов при этом записываются как задумано.

В результате получаю кнопки с разным текстом но с одинаковым значением value.

У кого какие идеи почему так получается и как это исправить?
Ошибка при записи в value кнопки Id объекта с полученной колекции. Это всё в TagBilder


Ошибка при записи в value кнопки Id объекта с полученной колекции. Это всё в TagBilder


Ошибка при записи в value кнопки Id объекта с полученной колекции. Это всё в TagBilder
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.01.2019, 23:39
Ответы с готовыми решениями:

this это адресс объекта, а *this это сам объект. я всё правельно понял?
this это адресс объекта, а *this это сам объект. я всё правельно понял?

Индекс объекта колекции в Excel
Подскажите пожалуйста как определить индекс кнопки после вызова . Максимум что получается добратся...

GameObject.SetActive(); По нажатию кнопки - появление объекта, при повторном нажатии, исчезание объекта
Привет. Не знаю, как сделать скрипт, который при нажатии кнопки делал GameObject активным , а при...

Ошибка установления соединения с SQL Server при нажатия кнопки объекта " Login"
Доброго времени суток, форумчане! Начал пробовать делать Web-приложение под ASP.NET. Создал 1-у...

При нажатии кнопки запуска мигает светодиод и всё.
При нажатии кнопки запуска мигает светодиод и всё. Снял крышку - при нажатии дергается вентилятор...

2
NitroTol
0 / 0 / 0
Регистрация: 09.01.2016
Сообщений: 16
Завершенные тесты: 1
21.01.2019, 00:17  [ТС] 2
т.к. никто долго не отвечал на мой вопрос пришлось вставлять свои костыли в код... Мне кажется это не красивое и не эффективное решение но оно работает.

Надеюсь моё решение кому нибудь поможет...

Если у кого то есть вариант лучшего решения с радостью его изучу!)

в контроллере:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[HttpGet]
        public ActionResult MenuCompany()
        {
            MenuItemDTO itemDTO = new MenuItemDTO()
            {
                CompanyName = Session["CompanyName"].ToString(),
            };
            List<MenuItemDTO> model = MenuService.ListMenuItem(itemDTO);
            
            return View(model);
        }
        [HttpPost]
        public ActionResult MenuCompany(string Id)
        {
            MenuItemDTO itemDTO = new MenuItemDTO()
            {
                CompanyName = Session["CompanyName"].ToString(),
                ParentId = Convert.ToInt32(Id)
            };
 
            List<MenuItemDTO> model = MenuService.ListMenuItem(itemDTO);
            return View(model);
        }
вюшка:

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
@model List<Catering.BLL.DTO.MenuItemDTO>
@using Catering.Web.CastomHelpers
<p>
    @Html.ActionLink("Create New", "Create")
</p>
 
<div id="results" class="col-md-6">
    @using (Ajax.BeginForm("MenuCompany", new AjaxOptions { UpdateTargetId = "results" }))
    {
        @MyHelpers.TableConstruct(Model)
    }
</div>
<button  onclick="javascript:history.go(-1)">Back</button>
Работающий хелпер:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
 public static class MyHelpers
    {
        public static IHtmlString TableConstruct ( List<MenuItemDTO> menuItems)
        {
            string[] arrayId = new string[menuItems.Count]; 
            for (int i = 0; i < menuItems.Count; ++i) // создаю массив в котором хранятся Id элементов List
            {
                arrayId[i] = menuItems[i].Id.ToString();
            }
            
            var tagTable = new TagBuilder("table"); // объявляю теги
            var tagTr = new TagBuilder("tr");
            var tagTd = new TagBuilder("td");
            var tagButton = new TagBuilder("button");
            StringBuilder htmlBuilder = new StringBuilder();
           
            tagButton.AddCssClass("btn");        // добавляю стили кнопке
            tagButton.AddCssClass("btn-dark");
            tagButton.AddCssClass("btnMy");
            htmlBuilder.Append(tagTable.ToString(TagRenderMode.StartTag));
           
            for (int i = 0; i < menuItems.Count; i ++)  // в этом цикле формирую таблицу кнопок 
                                                        //и в каждую кнопку записываю данные с элементов списка
            {
                if (i % 3 == 0)
                { htmlBuilder.Append(tagTr.ToString(TagRenderMode.StartTag)); }
                    
                    htmlBuilder.Append(tagTd.ToString(TagRenderMode.StartTag));
                    tagButton.MergeAttribute("name", "Id");
                    tagButton.MergeAttribute("value",menuItems[i].Id.ToString());
                    htmlBuilder.Append(tagButton.ToString(TagRenderMode.StartTag));
                    htmlBuilder.Append(menuItems[i].Name.ToString());
                    htmlBuilder.Append(tagButton.ToString(TagRenderMode.EndTag));
                    htmlBuilder.Append(tagTd.ToString(TagRenderMode.EndTag));
 
                if ((i + 1) % 3 == 0 || i == menuItems.Count)
                { htmlBuilder.Append(tagTr.ToString(TagRenderMode.EndTag)); }
            }
            htmlBuilder.Append(tagTable.ToString(TagRenderMode.EndTag));
             
            var html = htmlBuilder.ToString(); // тут я получаю строку с не правильными значениями в value
 
            for(int i = 0; i < arrayId.Length;i++) // в этом цикле исправляю значения  value
            {                                      // т.к. все value хранят Id первого элемента
                                                   
                int lastIndex = html.LastIndexOf(arrayId[0]);  // ищю индекс последнего значения value 
 
                html = html.Remove(lastIndex, arrayId[0].Length); // удаляю не правильное значение
                html = html.Insert(lastIndex, arrayId[arrayId.Length - i -1]); //и вставляю правильное
            }                                                                  // удаления и вставки произвожу от конца строки к началу
            return MvcHtmlString.Create(html);
        }
    }
Ошибка при записи в value кнопки Id объекта с полученной колекции. Это всё в TagBilder
0
sau
2022 / 1635 / 271
Регистрация: 22.07.2011
Сообщений: 6,208
Завершенные тесты: 1
22.01.2019, 15:37 3
NitroTol,
у Вас просто tagButton создается один раз в одном экземпляре и Вы не применяете перезапись атрибута , это 3-й аргумент функции MergeAttribute.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.01.2019, 15:37

Ошибка при чтении изменений при обмене РИБ: Ошибка при вызове метода контекста (ПрочитатьИзменения): Ошибка записи!
Доброго всем времени суток! подскажи пожалуйста как исправить ошибку: Ошибка при чтении изменений...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru