|
DropDownList из файла
|
|||
---|---|---|---|
#18+
Добрый день, подскажите, пожалуйста, как реализовать следующее (ASP.NET MVC): есть текстовый файл с разделителями: Код: plaintext 1. 2.
Мне надо в DropDownList вывести названия города, а при выборе элемента в контроллере получить остальные значения. Я создал класс в папке "Models": Код: c# 1. 2. 3. 4. 5. 6.
Потом определил ViewModel: Код: c# 1. 2. 3. 4. 5.
Теперь хочу определить в контроллере привязку, но как это сделать? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Код: html 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2019, 12:37 |
|
DropDownList из файла
|
|||
---|---|---|---|
#18+
Qwe.Qwe1, Не понял в чём вопрос. Вижу вы читаете файл в GetDataFromCSV, заполняете модель в Index. Какая проблема? Зачем вам GetData? Какая привязка вам ещё нужна? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2019, 13:21 |
|
DropDownList из файла
|
|||
---|---|---|---|
#18+
Здесь 2 момента: 1) как должен выглядеть метод "public ActionResult Index"? Худо-бедно список заполняется и выводится, но нужно ли что-то передать в Index? Мне кажется, я здесь как-то нет делаю... 2) при выборе элемента из списка у меня должен сработать Аякс-запрос (см. ниже). Но он не срабатывает. А даже когда это происходит и я оказываюсь в методе "GetData", то как получить для выбранного элемента остальные значения? Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2019, 13:30 |
|
DropDownList из файла
|
|||
---|---|---|---|
#18+
Qwe.Qwe1, У вас должно два метода Index -- один принимает GET запрос, другой POST и крайне желательно две разных модели на отображение и на отправку данных Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Qwe.Qwe12) при выборе элемента из списка у меня должен сработать Аякс-запрос (см. ниже). Но он не срабатывает. А даже когда это происходит и я оказываюсь в методе "GetData", то как получить для выбранного элемента остальные значения? вообще не понял чего вы хотите. у вас же есть метод GetDataFromCSV, чтобы получить все остальные значения вот более подробная дока по работе с данными в MVC https://metanit.com/sharp/mvc5/3.2.php ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2019, 16:22 |
|
DropDownList из файла
|
|||
---|---|---|---|
#18+
Ну я хотел как в десктопе, видимо, здесь так нельзя: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Но список "_data" - всегда пустой. Поэтому каждый раз в методе GetData я заново по сути считываю из файла, выбираю всю доп. информацию и возвращаю обратно во View. Так заработало. [HttpGet] public JsonResult GetData(string selected) { _data = GetFromCSV(); var d = _data.Where(x => x.Name == selected); return Json(JsonConvert.SerializeObject(new { name = d.Name, area = d.Area, population = x.Population }), JsonRequestBehavior.AllowGet); } [/SRC] ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2019, 20:16 |
|
DropDownList из файла
|
|||
---|---|---|---|
#18+
Тебе нужно разобраться с темой "жизненный цикл запроса". Чтобы хотя бы понимать, что экземпляр контроллера (и много чего еще) создается для каждого запроса. Ты можешь сделать свой _data статическим (не забыв про безопасность потоков), но правильно будет сделать его отдельным классом-синглтоном и получать через DI (изучив предварительно тему внедрения зависимостей) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2019, 22:41 |
|
DropDownList из файла
|
|||
---|---|---|---|
#18+
Qwe.Qwe1Но список "_data" - всегда пустой. Поэтому каждый раз в методе GetData я заново по сути считываю из файла, выбираю всю доп. информацию и возвращаю обратно во View. Так заработало. Основное отличие веб-приложения от десктопа -- отсутствие полностью согласованного состояния. Более того, в веб-приложениях стоит стремиться к отсутствию состояния вообще. Т.е. каждый запрос обрабатывается как "выстрелил и забыл". Если вы хотите сохранять состояние между запросами, то вам придётся ещё попотеть. ASP.NET предоставляет различные средства, чтобы вам помочь, но ни один не является ни серебряной пулей, да ещё и по сути вредны. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2019, 00:20 |
|
DropDownList из файла
|
|||
---|---|---|---|
#18+
Shocker.Proы можешь сделать свой _data статическим Что опять-таки не гарантирует, что в нём что-то будет :) 1. веб-приложение может быть перезапущено, IIS может рестартануть прилагу в любой момент (с точки зрения клиента) 2. при масштабировании приложения более, чем на один сервер, о статиках вообще придётся забыть, кроме как для кеширования инфраструктуры ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2019, 00:22 |
|
DropDownList из файла
|
|||
---|---|---|---|
#18+
hVosttЧто опять-таки не гарантирует, что в нём что-то будет :)Почему не гарантирует? CSV считывается при первом запросе и всё, это касается и перезапуска и масштабирования. Само собой, когда ТС дойдет до масштабирования, он уже не станет заниматься такой глупостью, как чтение CSV )) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2019, 00:28 |
|
DropDownList из файла
|
|||
---|---|---|---|
#18+
Shocker.ProПочему не гарантирует? CSV считывается при первом запросе и всё, это касается и перезапуска и масштабирования. Скорее нужен Cache-Aside pattern , даже если в роли кеша будет выступать статик :) Shocker.ProСамо собой, когда ТС дойдет до масштабирования, он уже не станет заниматься такой глупостью, как чтение CSV )) Сегодня ты читаешь CSV, а завтра выбираешь между Redis и Aerospike )) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2019, 00:41 |
|
|
start [/forum/topic.php?fid=18&msg=39875741&tid=1354892]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
27ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 131ms |
0 / 0 |