Я использую Framework 4.5 и решил воспользоваться некоторыми его улучшений .. Скажем, у меня есть следующий контроль внутри FormView:TryUpdateModel не обновляет ничего для FormView
<asp:TextBox ID="EventNumberTextBox" runat="server" Text='<%# Item.Event_Num %>' />
В моем UpdateMethod я делаю следующее:
public void UpdateModelFromView(int? ID)
{
var modelView = new AlertMessageController().LoadById(ID);
var updateSuccess = TryUpdateModel(modelView);
if (updateSuccess)
{
new AlertMessageController().Save(modelView);
RedirectToViewPage();
}
}
Проблема заключается в том, что, хотя коллекции формы действительно содержит все изменения, которые я сделал - в данном случае я задал Event_Num некоторое значение - изменения не отражается на видовой. Другими словами, любые изменения, которые я вношу в элементы управления FormView, игнорируются, и модель сохраняется как после загрузки ...
Вы пытались использовать BindItem вместо Item на вашем TextBox, т. Е. BindItem.Event_Num? –
Грэм, большое спасибо, я чувствую, что я почти там, но теперь у меня другая проблема. Дело в том, что я должен брать поля только из формы и игнорировать URL. Когда я использую TryUpdateModel только с одним параметром - он обновляет модель с параметрами URL и формы. Я попытался использовать второй параметр: new NameValueCollectionValueProvider (HttpContext.Current.Request.Form, Culture.GetBrowserOrDefaultCulture()) или новый FormValueProvider (Page.ModelBindingExecutionContext), но в этих случаях TryUpdateModel полностью игнорирует все измененные значения ... – Anik
У меня есть попытался изменить параметры для UpdateMethod, чтобы принять полный объект: UpdateModelForView (элемент AlertMessageInfo). Теперь ModelState, кажется, содержит все ключи из формы, но ... его значения не применяются, когда я пытаюсь использовать TryUpdateModel (modelView, новый FormValueProvider (Page.ModelBindingExecutionContext)) – Anik