Форум программистов, компьютерный форум, киберфорум
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/29: Рейтинг темы: голосов - 29, средняя оценка - 4.97
1 / 1 / 4
Регистрация: 06.05.2014
Сообщений: 167
1

Как передать параметр частичному представлению?

22.10.2014, 05:06. Показов 5491. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задача следующая. Есть представление, в котором находятся несколько частичных представлений(таблицы). Как передать параметр этим представлениям? Например, в случае обычного паттерна View-Corntroller мы передаем параметр представлению через контроллер
C#
1
2
3
4
5
6
 public ActionResult Index(string Param)
        {
            ViewData["CurrentTitle"] = "Index";
            var Mode = DataAdapter.SqlStorageProcedure(Param);
            return View(Mode);
        }
А вот как быть если в представлении Index размещены несколько PartialView, у которых собственные контроллеры и которым нужно передать параметр вызывая Index?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.10.2014, 05:06
Ответы с готовыми решениями:

Путь к частичному представлению
Всем привет! Создала частичное представление и поместила в папке Shared, а затем на мастер...

Как передать параметр
Привет всем ! Подскажите как передать параметр в контроллер. То есть ввожу значение в текстбокс, и...

Как передать и якорь и параметр?
Т.е. есть файл default.asp, в котором есть якорь с именем ch345 (например) и еще в него передается...

как передать в include параметр?
проблема в следующем: требуется динамически выбирать фаил для включения как это сделать(имя файла...

4
3462 / 2473 / 695
Регистрация: 02.08.2011
Сообщений: 6,704
22.10.2014, 06:17 2
Цитата Сообщение от GaS_597 Посмотреть сообщение
А вот как быть если в представлении Index размещены несколько PartialView, у которых собственные контроллеры и которым нужно передать параметр вызывая Index?
GaS_597, я ведь вам уже ответил на вопрос. Можно не передавать параметры в родительскую view: а
просто делать вот так:
C#
1
2
3
4
5
6
public ActionResult Index(string Param)
        {
             /*ViewData["CurrentTitle"] = "Index";
            var Mode = DataAdapter.SqlStorageProcedure(Param); */
            return View();
        }
А в code-blocks вызывать методы действий для каждого partial view. При этом, если подразумевается, что доступ к этим методам должен быть только из родительской вьюхи, то на методы также вешают атрибут ChildActionOnlyAttribute. Если же хотите модель (либо ее часть) родительской вьюхи передавать как параметр для ваших partial(при первичном отображении), то просто выделяете в отдельную переменную в code-block, и передаете.
0
1 / 1 / 4
Регистрация: 06.05.2014
Сообщений: 167
22.10.2014, 07:09  [ТС] 3
Честно говоря не понял...
Объясню подробнее. Это система отчетов. У меня есть страница, в которой есть список (например это сотрудники). Передаваемый параметр это ID.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@{
    Html.MobSyncfusion().ScrollPanel("ScrollPanel")
                        .ScrollBarWidth(10)
                        .ScrollType(ScrollType.Both)
                        .RenderMode(RenderMode.IOS)
                        .TargetId("scrollcontent")
                        .Render();
}
<div id="scrollcontent">
    <div>
        @{
 
            Html.MobSyncfusion().ListBox("lbTemplate")
 
                .AutoFormat(MobSkins.DarkNight)
 
                .Items(items =>
                {
                    items.Add().ItemTemplate(@<p>@Html.ActionLink("Иванов", "MainView", "Controller", new { Param = "1" }, null)
                    </p>);
                    items.Add().ItemTemplate(@<p>@Html.ActionLink("Петров", "MainView", "Controller", new { Param = "2" }, null)
                    </p>);
... и так далее
Тыкая на сотрудника мы вызываем передаем параметр контроллеру, который дергает процедуру с этим параметром. В представлении мы видим результат. А вот как быть когда нужно передать этот параметр, чтобы увидеть результат в главном MainView где находятся PartialView и у каждого свой контроллер?
Можно подробнее пожалуйста?
0
3462 / 2473 / 695
Регистрация: 02.08.2011
Сообщений: 6,704
22.10.2014, 07:43 4
Мм, теперь, я вас понял. Недавно была похожая проблема.
Насколько мне известно, есть три варианта передачи информации на действие контроллера:
1. Отправка через формы. Тут работает model binding. Здесь все просто. Это не ваш случай.
2. RouteDataDictionary для ссылок, но привязать данные непосредственно из интерфейса нельзя.
Только ViewBag/ViewData, либо свойства вашей Model.
3. Когда есть какой-то список объектов, и нужно передавать какое-то произвольное значение в зависимости от того какой объект выбран. В таком случае параметр вытаскивается из интерфейса, из разметки. Используйте jquery. В событии загрузки формы на каждую ссылку добавляется обработчик нажатия. Смотрите, например, $.ajax() method.

Добавлено через 10 минут
Пример:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
$.ajax({
                    type: "post",
                    url: "/Administrator/ConvertToWebClient",
                    data: {
                        elemId: id,
                    },
                    error: function() {
                        alert("Error in processing data");
                    },
                    success: function(data) {
                        $("#"+IdElement).html(data);
                    }
                });
Где IdElement - идентификатор того контейнера, в котором отображается ваш partial view.
url - адрес метода контроллера.
data - это тот параметр который вам нужно вытащить из ссылки. ( с помощью jquery).
При этом важно, чтобы имя параметра (у меня это "elemId") совпадало с именем параметра в методе действия, который возвращает вашу partial view.
0
1 / 1 / 4
Регистрация: 06.05.2014
Сообщений: 167
22.10.2014, 13:38  [ТС] 5
В общем, как-то все заработало и без jQuery. Я сам не понял как, но в частичные представления передавался параметр при вызове MainView. Но так как смотрелось это не очень, т.к. количество данных в каждом отчете по каждому ID сильно различалось, решил выводить без привязки к ID, просто списком.
0
22.10.2014, 13:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.10.2014, 13:38
Помогаю со студенческими работами здесь

Как передать параметр из формы в ASP код ?
subj

как передать в функцию необязательный параметр OPTIONAL?
На VB есть function fun(a1, optional a2) где a2- необязательный параметр как это решается в...

Как передать параметр так что бы он не обрезался?
Пытаюсь передать параметр search1.asp?p_text=c++ но когда смотрю что пришло там p_text=c....

Как передать параметр javascript контроллеру и обратно
Только начал изучать asp.net. Пытаюсь сделать простейшую вещь: Хочу определить объект javascript:...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru