Помогите найти название функции mvc framework, или это где-то в коде написано?
есть проект на mvc framework, в котором работа с данными выглядит примерно так:
[HttpGet]
public ActionResult Edit(Guid? id, Guid? ownerId)
{
// заполнение modeldata, даже в случае если это новый элемент
// например modelData.Owner = new Owner(){ id = ownerId };return View(modelData);
}
[HttpPost]
public ActionResult Edit(ModelType1 data)
{
bool updating = data.ID != Guid.Empty;
data.ID = dbService.CreateOrUpdateModelType1(data);
return Json(data, updating);
}
на вьюхе, ничего про modelData.Owner нету, но есть @Html.AntiForgeryToken()
так вот, когда вызывается POST Edit — data — Owner заполнен данными, которые указаны в GET
подскажите, куда копать? это какая-то магия? я не смог найти этому название в гугле.
Re: AntiForgeryToken и сохранение данных между запросами
Здравствуйте, pumpurumer, Вы писали:
P>на вьюхе, ничего про modelData.Owner нету, но есть @Html.AntiForgeryToken() P>так вот, когда вызывается POST Edit — data — Owner заполнен данными, которые указаны в GET P>подскажите, куда копать? это какая-то магия? я не смог найти этому название в гугле.
Здравствуйте, pumpurumer, Вы писали: P>а что нужно сделать чтобы это заработало с нуля? и где это хранится? в сессии? P>взял тестовый проект mvc framework, добавил такое:
Код
P>
P> [HttpGet]
P> public ActionResult TestPage()
P> {
P> var model = new AFTTestViewModel() { Displayed = "public", Hidden = "private" };
P> return View(model);
P> }
P> [HttpPost]
P> [ValidateAntiForgeryToken]
P> public ActionResult TestPage(AFTTestViewModel model)
P> {
P> // ValidateAntiForgeryToken - работает
P> // в model.Hidden - пусто.
P> return View(model);
P> }
P> [Serializable]
P> public class AFTTestViewModel
P> {
P> public string Displayed { get; set; }
P> public string Hidden { get; set; }
P> }
P>
MVC's anti-forgery support writes a unique value to an HTTP-only cookie and then the same value is written to the form. When the page is submitted, an error is raised if the cookie value doesn't match the form value.
Если хотите получать поле модели Hidden в контроллере в pоst запросе, то нужно Hidden и во вьюху добавить, хотя бы вот так :
@Html.HiddenFor( model => model.Hidden)
Re[4]: AntiForgeryToken и сохранение данных между запросами
Здравствуйте, Klikujiskaaan, Вы писали:
K>Собственно уже работает K>
K>MVC's anti-forgery support writes a unique value to an HTTP-only cookie and then the same value is written to the form. When the page is submitted, an error is raised if the cookie value doesn't match the form value.
K>Если хотите получать поле модели Hidden в контроллере в pоst запросе, то нужно Hidden и во вьюху добавить, хотя бы вот так : K>
K>@Html.HiddenFor( model => model.Hidden)
K>
про @Html.HiddenFor понятно, я говорю о том, что в исследуемом проекте это работает прозрачно и я не могу найти где это написано.
т.е. если тоже-самое сделать в целевом проекте — данные там будут. (т.е. в исследуемом проекте в hidden данные будут, без @Html.HiddenFor)
у меня возник вопрос — это какая-та фича mvc framework, или искать в проекте код который это делает ?
дело в том что в проекте очень много IOC и прочего, так в лоб найти не смог место котое бы сохраняло/восстанавливало модель, магия какая-то.
вопрос в том — это магия фрэймворка, или таки есть где-то код который это делает?
Re[5]: AntiForgeryToken и сохранение данных между запросами
Здравствуйте, pumpurumer, Вы писали:
P>дело в том что в проекте очень много IOC и прочего, так в лоб найти не смог место котое бы сохраняло/восстанавливало модель, магия какая-то.