Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
monstro
1 / 1 / 0
Регистрация: 30.03.2013
Сообщений: 28
1

Динамическое изменение значений в представлении

06.12.2013, 21:39. Просмотров 1898. Ответов 2
Метки нет (Все метки)

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

HTML5
1
2
3
4
5
6
7
8
9
.....
@foreach (var driver in Model.DriversInfo)
     {
                <div class="group">
                    <input type="checkbox" /> @driver.Name
                    <input class="driver-cost" type="hidden" value="@driver.Cost" />
                </div>
    }
    <input id="selected-driver-cost" name="driverCost" type="hidden" value=""/>.....
Где, модель это некоторая информация о водителях. О них известно имя и его стоимость.
Собственно вопрос в том как можно сделать так, что при активации чекбокса в скрытое поле c именем "driverCost" попадала стоимость того водителя, чекбокс которого активен, что бы можно было передать эту инфу дальше...
Я бы погуглил, но сам вопрос специфичен, может кто решал подобную проблему. Я так понял, это можно с помощью jquery провернуть, только её я почти не юзал.
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2013, 21:39
Ответы с готовыми решениями:

Динамическое создание объектов в представлении
Всем доброго времени суток. Возникла такая проблема: Есть поля ввода, куда пользователь должен...

Динамическое добавление inout на представлении и обработка в контроллере
Ребят, вопрос такой: Допустим я добавляю новый продукт - есть определенная форма, но надо чтобы...

Динамическое изменение темы
Здравствуйте)Подскажите пожалуйста,где ошибка в коде. Сам текст ошибки:&quot; Не удалось найти имя типа...

Динамическое изменение cshtml
Пытаюсь реализовать редактор шаблона сайта из админки. Будет ли происходить перекомпиляция сайта...

Динамическое изменение DataField в GridView (BoundField)
Необходимо программно менять значение для &lt;asp:BoundField DataField='Значение' /&gt; делю так ...

2
aleksandroparin
8 / 8 / 2
Регистрация: 19.02.2013
Сообщений: 23
07.12.2013, 00:45 2
Лучший ответ Сообщение было отмечено monstro как решение

Решение

Придётся. Не хочешь jquery, на чистом JavaScript будешь делать. Кроме jquery есть и другие javascript библиотеки, но jquery - одна из самых популярных. Любые изменения на странице без обновления всей страницы будут решаться javascript ом, в противном случае, думаю, усложнишь свой сайт как для пользователей, так и для себя (в твоём конкретном случае без скрипта будет очень сложно). Скачай пару видео-курсов по jquery. Для твоих задач напишешь буквально несколько строчек кода, а результат будет приятным. К тому же, если ты создал не чистый проект а проект веб-сайта, там jquery уже подключен (загляни в папку Scripts, там должна быть куча jquery...js), остается лишь добавить новый чистый myscript.js файл в папку Scripts (можно для удобства подпапку создать в ней, скажем MyScripts). В папке App_Start в файле BundleConfig.cs добавить следующее
C#
1
2
bundles.Add(new ScriptBundle("~/bundles/удобное_название").Include(
                        "~/Scripts/Myscripts/myscript.js"));
Затем построй решение, чтобы этот bundle, прижился, так сказать. Зачем нужны эти bundles - это отдельная тема.
Затем где нибудь в файле твоего представления добавляем следующее:
C#
1
2
3
4
@section Scripts
{
     @Scripts.Render(“~/bundles/удобное_название”).
}
Проверь однако, чтобы в _Layout.cshtml перед закрытием </body> было следующее:
C#
1
2
@Scripts.Render("~/bundles/jquery")
@RenderSection("scripts", required: false)
Всё готово. Открывай наш чистый .js файл и пиши:
Javascript
1
2
3
$(function () {
    alert("Привет от jquery!");
});
Пробуй! Сработало?
Тогда держись!

Убирай последнее. Вместо него пишем так:
(Я проявлю инициативу и сделаю так чтобы выбирался только один водитель.
Для этого дай всем чекбоксам одно и то-же имя, скажем "driver-cb" и вместо hidden временно сделай text, чтобы видеть)
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
$(function () {
   $("input:checkbox").on("click", function (e) {
        if ($(this).is(":checked")) {
            var group = "input:checkbox[name='" + $(this).attr("name") + "']";
            $(group).prop("checked", false);
            $(this).prop("checked", true);
            $("#selected-driver-cost")[0].setAttribute("value", e.target.nextElementSibling.getAttribute("value"));
        } else {
            $(this).prop("checked", false);
            $("#selected-driver-cost")[0].setAttribute("value", null);
        }
    });
});
Всё, пробуем. У меня получилось так. Несколько имён с чек боксами, после них строка. Нажимаю чекбокс, и цена водителя попадает в строку. Убираю чекбокс, строка пуста. Всё так как ты хотел?

Добавлено через 9 минут
Смотри, я там в начале ошибку допустил в bundles. Написал создать подпапку MyScripts, а в коде для bundles указал в пути .../Myscripts/... с маленькой "s". Пиши путь правильно...
1
monstro
1 / 1 / 0
Регистрация: 30.03.2013
Сообщений: 28
07.12.2013, 11:15  [ТС] 3
Большое спасибо за развернутый ответ
1
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.12.2013, 11:15

Динамическое изменение css в ASP.NET
Здравствуйте! Подскажите пожалуйста как динамически по событиям можно изменять значение css при...

Динамическое изменение ссылки на файл CSS
Пользователь на web-форме выбирает из выпадающего списка название стилей. в зависимости от того...

Динамическое изменение размера картинки на страничке
Добрый день! Суть вопроса такая: есть главная страничка Default.aspx на форме этой странички...


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

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

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