Проблема
У меня есть Telerik TabControl, и содержимое каждой вкладки является частичным. При запросе GET все работает без сбоев:
//
// GET: /ProductVersion/Translations
public ActionResult Translations(Guid id)
{
VersionEditTabViewModel model = CreateTranslationsViewModel(id);
return PartialView("Translations", model);
}
Теперь проблема в том, что на некоторых вкладках у меня есть форма с элементами управления, которые запускают событие отправки.
[HttpPost]
public ActionResult Translations(Guid id)
{
FormCollection formCollection = new FormCollection(Request.Form);
string message = string.Empty;
int languageId = int.Parse(formCollection["TranslationsLanguageList"]);
string action = formCollection["TranslationAction"];
if(action == Constants.translation_save)
{
_translationModel.SaveTranslations(formCollection);
message = "Translation information saved";
}
else if (action == Constants.translation_language_changed)
{
/*
PROBLEM: causes whole page to render, not partial
*/
return PartialView("Translations", model);
}
return RedirectToAction( ... updates the complete page not only partial ...);
}
У меня вопрос: как отрендерить партиал методом POST? Потому что теперь с этим исходным кодом содержимое вкладки будет загружено на ВСЕ страницу, а не внутри вкладки.
Решение
Мне пришлось разместить DIV за пределами Ajax.Form, а также у меня была неправильная отправка в моем DropDownList. Что я сделал, так это то, что я создал скрытую кнопку отправки с идентификатором, а затем использовал jQuery для выполнения этого события щелчка.