powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Несколько форм в одном представлении (ASP MVC)
10 сообщений из 10, страница 1 из 1
Несколько форм в одном представлении (ASP MVC)
    #38257929
Andrey_VP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Есть желание в одном представлении разместить несколько форм, каждая из которых использовала бы свою модель.

Я стал делать так:
В представление передаю модель, в которой перечислены все нужные модели предметной области для каждой формы.
Из этого общего представления вызываются частичные представления, в каждом из которых своя форма со своей моделью.
Но вот беда, input type="submit" в этих частиных представлениях не вызывают метод [HttpPost] соответствующего частичного представления, а вызывают[HttpPost] главного представления.
Вызовы главного и частичных представлений находятся в одном контроллере.

Как сделать так, чтобы форма из частичного представления отправлялась на обработку своего метода Post?
...
Рейтинг: 0 / 0
Несколько форм в одном представлении (ASP MVC)
    #38257946
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey_VPinput type="submit" в этих частиных представлениях не вызывают метод [HttpPost] соответствующего частичного представления, а вызывают[HttpPost] главного представлениязайдите в firebug, на закладку Net и посмотрите правильный ли запрос уходит на сервер
...
Рейтинг: 0 / 0
Несколько форм в одном представлении (ASP MVC)
    #38258133
Andrey_VP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Паганель, спасибо.
...
Рейтинг: 0 / 0
Несколько форм в одном представлении (ASP MVC)
    #38258719
Andrey_VP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По этой же теме возник др. вопрос. Подскажите!

В частичном представлении при вводе некорректных данных возникает ошибка несоответствия модели.
Метод [HttpPost] частичного представления ошибку видит: ModelState.IsValid = false

Но ошибка не доходит до частичного представления - при повторном вызове представления команда @Html.ValidationSummary(true) в частичном представлении ничего не выдаёт.
...
Рейтинг: 0 / 0
Несколько форм в одном представлении (ASP MVC)
    #38259361
Фотография a_titeev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey_VP,

каждая форма должна работать независимо и независимо валидироваться? тогда каждую из них аяксом и надо отрабатывать. validatiomsummary в partialview отработает нормально. для каждого партиала можно использовать свою модель без проблем.
...
Рейтинг: 0 / 0
Несколько форм в одном представлении (ASP MVC)
    #38259682
Andrey_VP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
a_titeev, c ajax-ом никогда не сталкивался, пробую делать впервые - и не получается.
Что я делаю не так?
Я сделал:
1) В Web.config: <add key="UnobtrusiveJavaScriptEnabled" value="true" />
2) Подключил библиотеки в шаблон главного представления:
Код: html
1.
2.
<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type= "text/javascript "></script>


3) В частичное представление добавил:
Код: c#
1.
2.
3.
@{
    AjaxOptions ajaxOpt = new AjaxOptions { UpdateTargetId = "password" };
}


и
Код: c#
1.
2.
3.
<div id="password">
    @using (Ajax.BeginForm("partPwd", ajaxOpt)) 
    ....



Метод [HttpPost] частичного представления в конце вызывает это частичное представление.

В результате: после ввода некорректных данных главное представление исчезает, это частичное представление перетирает всё собой. И @Html.ValidationSummary(true) так и не выдаёт ошибок модели, хотя нужные поля подкрашивает как ошибочные (согласно CSS).
...
Рейтинг: 0 / 0
Несколько форм в одном представлении (ASP MVC)
    #38261100
Фотография a_titeev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
partPwd должно возвращать PartialView. а validationSummary где находится то?
...
Рейтинг: 0 / 0
Несколько форм в одном представлении (ASP MVC)
    #38261307
Andrey_VP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
a_titeev, да, в случае если запрос приходит ajax-совский, то возвращается PatialView:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
        [HttpPost]
        public ActionResult partPwd(FlatPartPwdModel flatPartPwdModel)
        {
            if (ModelState.IsValid)
            {
                int flatNum = int.Parse(this.User.Identity.Name);
                TempData["message"] = flatRepository.SaveFlat(flatNum, flatPartPwdModel.PasswordNew, flatPartPwdModel.PasswordConfirm, null);
            }
            if (Request.IsAjaxRequest())
                return PartialView();
            else
                return Redirect(Url.Action("Index"));
        }


Но, к сожаления, запрос из частичного представления никогда не приходит ajax-овским. И ValidationSummary ничего не возвращает, несмотря на то, что запрос из частичного представления приходит с ModelState.IsValid = false
ValidationSummary находится в самом частичном представлении:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
@model TSJ.WebUI.Models.FlatPartPwdModel

<h3>Изменить пароль:</h3>

@Html.ValidationSummary(true)
@if (TempData["message"] != null)
    {<div class="Message">@TempData["message"]</div>}
@Html.EditorFor(m => m.PasswordNew)


@Html.EditorFor(m => m.PasswordConfirm)



Из главного представления частичное вызывается так:
Код: html
1.
2.
3.
4.
5.
6.
7.
@using (Ajax.BeginForm("partPwd", new AjaxOptions { UpdateTargetId = "password" })) 
{
    <div id="password">
        @Html.Action("partPwd")
    </div>
    <p><input type="submit" value="Изменить"/></p>
}
...
Рейтинг: 0 / 0
Несколько форм в одном представлении (ASP MVC)
    #38261321
Andrey_VP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу прощения, вопрос о том, что из частичного представления не приходит ajax запрос снимается.
По глупости допустил опечатку в
Код: html
1.
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type= "text/javascript "></script>

Лишний пробел после слов text/javascript.

Остался вопрос о том, почему ValidationSummary ничего не выдаёт в частичном представлении (хотя в аннотациях модели стоят ErrorMessage), при этом ошибочные поля подкрашиваются согласно CSS.
...
Рейтинг: 0 / 0
Несколько форм в одном представлении (ASP MVC)
    #38261340
Andrey_VP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за помощь!

Последний вопрос тоже снимается.

В частичном представлении надо вызывать ValidationSummary без параметра excludePropertyErrors = true, т.е. просто
Код: html
1.
@Html.ValidationSummary()


И всё работает.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Несколько форм в одном представлении (ASP MVC)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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