powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Помогите разобраться с Ajax
3 сообщений из 3, страница 1 из 1
Помогите разобраться с Ajax
    #38177091
egorius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется контроллер
Код: 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.
namespace Mvc3App.Controllers
{
    public class KPIController : Controller
    {

        public ActionResult UserPage(string per_oid)
        {
            PageParameters PageParam = new PageParameters();
//Заполняем свойства класса PageParam
            return View(PageParam);
        }
        [HttpPost]
        public ActionResult UserPage(string per_oid, FormCollection frmCollect)
        {
            PageParameters PageParam = new PageParameters();
//Заполняем свойства класса PageParam с учетом значений в frmCollect
            return View(PageParam);
        }
//Контроллер для PartialView
        public ActionResult UserMetrics(PageParameters Params)
        {
            UserMetrics usrMetrics = new UserMetrics();
//Заполняем свойства класса usrMetrics с учетом значений свойств класса Params
            return View("ViewUserMetrics", usrMetrics);
        }

//Контроллер для PartialView
        public ViewResult Detailed(PageParameters Params) 
        {

            MetricsDetails Metrics = new MetricsDetails();
//Заполняем свойства класса Metrics с учетом свойств класса Params
            return View(ViewName, Metrics);
        }
    }
}



Основная вьюшка
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
@model Mvc3App.Models.PageParameters
@{
    ViewBag.Title = "UserPage";
    Layout = @ViewBag.Layout;
    AjaxOptions ajaxOpt = new AjaxOptions {UpdateTargetId = "detailed"};
}
@using (@Html.BeginForm())
{
    @Html.DropDownList("id", new SelectList(Model.AvlblDates, Model.SelectedDate), new { onchange = "this.form.submit()" })
}
@using (Ajax.BeginForm("Detailed", ajaxOpt))
{ 
    <p id="tabledata">
    @Html.Action("UserMetrics", new { Params = Model })
    </p>
  
    <p id="detailed">
    @Html.Action("Detailed", new { Params = Model }) 
    </p>

}



Первый PartialView (оставил только значимое на мой взгляд)
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
@model Mvc3App.Models.UserMetrics
@{
    Layout = null;
}
<table align="center" border="1">

@foreach (var item in Model.Strings)
{ 
<tr>
    <td>@Html.RadioButton("Metric", @item.Metric, @item.selected, new { onclick = "this.form.submit()" })</td>
    <td title="@item.Descr">@item.Name</td>
    <td>@item.Volume</td>
    <td>@item.Calc</td>
    <td>@item.ValueCalc</td>
    <td>@item.Value</td>
    <td>@item.ValueGroup</td>
</tr>
}

</table>



Второй PartialView (так же почищен от лишнего)
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
@model Mvc3App.Models.MetricsDetails
@{
    Layout = null;
}

<table align="center" border="1">
@foreach (var item in Model.Strings)
{
    <tr class="@item.color">
        <td>@item.inc_id</td>
        <td title = "@item.inc_details">@item.inc_details</td>
        <td>@item.reg_date</td>
        <td>@item.dl_date</td>
        <td>@item.fin_date</td>
    </tr>
}
</table>



Что хочется получить? На основной страничке, при выборе значения из DropDownList, обновляем всю страничку с учетом выбранного значения. Это все работало до того как прикостылил Ajax и работает сейчас (правда пришлось делать не очень удачный на мой взгляд кульбит с двумя формами - одну обычную, другую Ajax-овую)
При клике на Radiobutton в первой PartialView обновляем только второй PartialView. Причем для обновления его нам нужны как параметры, переданные в основную вьюху, так и выбранное значение в DDL и выбранный rariobutton.

Как сейчас все это работает. Во-первых при щелчке на radiobutton-е на страничке отображается только содержимое второго PartialView. Содержимое основной и основной вьюхи пропадает. Во-вторых в контроллер второй вьюхи не передается модель. Причем все эти неприятности случаются при нажатии радиокнопки (тоесть когда в роль вступает Ajax). При первичном отображении вьюхи так же как и при обновлении вьюхи при выборе значения в DDL все отображается и передается нормально.

Не сочтите за труд, тыкните неуча - где напорол? Сам совсем недавно во все это окунулся и из всего многообразия информации на эту тему в интернетах очень тяжело понять, что же касается именно моей проблемы.
...
Рейтинг: 0 / 0
Помогите разобраться с Ajax
    #38177279
egorius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Небольшое дополнение...
Изменил немного параметры AjaxOptions.
Добавил параметр Url
Код: html
1.
2.
3.
4.
AjaxOptions ajaxOpt = new AjaxOptions {
        UpdateTargetId = "dtlt",
        Url = Url.Action("Detailed"
...


Который, как обещают, используется для альтернативной обработки запросов при отключенной Яве. Все заработало, но запросы пошли через метод Post основной вьюхи. Чтоже получается - у меня ява отключена? В браузере вроде включено все (интранетные сайты целиком постоенные на яве работают без проблем). В настройках проекта? Где может быть подвох?
...
Рейтинг: 0 / 0
Помогите разобраться с Ajax
    #38191348
egorius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дабы поставить точку в этой оживленной теме, отпишусь, в чем же в итоге была проблема.
В строке подключения ненавязчивого аджакса было написано:
<script src="@Url.Content("~/Scripts/jquery.unabtrusive-ajax.js")" type="text/javascript"></script>
В то время как надо unobtrusive-ajax
Вот так вот все просто оказалось. Естественно код работал так, как и должен был работать при неактивной яве :)
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Помогите разобраться с Ajax
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]