powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Помогите понять работу TryUpdateModel и выход когда он не срабатывает
2 сообщений из 2, страница 1 из 1
Помогите понять работу TryUpdateModel и выход когда он не срабатывает
    #38768710
AspUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Есть код который хотелось бы чтобы работал через привязку моделей, но т.к. эта форма содержит мастер страницы и прочие контролы то FormValueProvider предоставляет длинные имена например "ctl00$ctl00$MainContext$AdminBody$ListViewMain$ctrl1$Name" и "ctl00$ctl00$MainContext$AdminBody$ListViewMain$ctrl1$Description". В результате TryUpdateModel возвращает истина но поля не обновляет(подозреваю что из-за длинных таких идентификаторов).
Вопрос как решить такое лучшим способом ?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 public void UpdateCategory(int? CategoryNewsID)
        {
            CategoryNews myRe = repo.CategoriesNews.Where(p => p.CategoryNewsID == CategoryNewsID).FirstOrDefault();
            if (myRe != null && TryUpdateModel(myRe, new FormValueProvider(ModelBindingExecutionContext)))
            {
                repo.SaveCategory(myRe);
            }
        }

 public class CategoryNews
    {
        [Key]
        public int CategoryNewsID { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
    }
...
Рейтинг: 0 / 0
Помогите понять работу TryUpdateModel и выход когда он не срабатывает
    #38770945
AspUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скажу к сведению что у класса
Код: plaintext
1.
CategoryNews 

есть метод
Код: plaintext
1.
public string Name { get; set; }



Загвоздка выходит в следующем: если в ListView при создании сделать input серверный,
Код: plaintext
1.
2.
3.
4.
       <InsertItemTemplate>
            <input id="Name" runat="server" />
            <asp:Button CommandName="Insert" Text="Insert" runat="server" />
        </InsertItemTemplate>



то работает поддержка состояния, но в коде при обработке внутри-глубже в provider, хранится поле(то что в html на форме name="ctl00$ctl00$MainContext$AdminBody$ListViewMain$ctrl1$Name") для привязки , соответственно TryUpdateModel не обновляет
Код: plaintext
1.
myRe.Name

.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
 public void InsertCategory()
        {
            IValueProvider provider = new FormValueProvider(ModelBindingExecutionContext);
            CategoryNews myRe = new CategoryNews();
            if (TryUpdateModel(myRe, provider))
            {
                repo.SaveCategoryNews(myRe);
            }
        }


Хотя бы тут если можно чтоб можно было сделать например
Код: plaintext
1.
myRe.Name = Request["ctl00$ctl00$MainContext$AdminBody$ListViewMain$ctrl1$Name"];

, а потом уже проверить TryUpdateModel , т.к. в классе CategoryNews атрибуты типа [Required(ErrorMessage="Name Обязательно!")]

Момент второй: в принципе если при создании элемента в списке input не серверный
Код: plaintext
1.
<input name="Name" /> 


тогда привязка моделей работает, но при обратных отправках формы элемент теряет состояние(ViewState). Как бы вот так сделать чтобы и состояние сохранялось и модели обновлялись? конечно лучше чтобы input серверный был...
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Помогите понять работу TryUpdateModel и выход когда он не срабатывает
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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