Редактор шаблонов / BeginForm не обновляет значения после возврата из действия, но во время отладки я вижу данные - PullRequest
1 голос
/ 16 сентября 2011
 @using (Ajax.BeginForm("SaveItemAndProperties", "HomeBuilder",
        new AjaxOptions
        {
            UpdateTargetId = "divSaveItemAndProps",
            InsertionMode = InsertionMode.Replace               
        }))
    {
        @Html.EditorForModel()        
        <input type="submit" value="Submit" />            
    }

В модели, которая вызывается из EditorForModel

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

PropertyValues ​​представляет собой список свойств и является вызовом EditorTemplate.

Из действия я изменяю значение и затем пытаюсь обновить данные обратно до вида

[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
public PartialViewResult SaveItemAndProperties(PropertyBuilderViewModel modelValues)
{
    //Change on property in modelValues
    return PartialView("PropertyBuilderControl", modelmodelValues);
}

Когда я отлаживаю, я правильно вижу данные, но они не отображаются в представлении. Любая идея, почему это так.

1 Ответ

10 голосов
/ 16 сентября 2011

Что вы меняете в своих действиях?Помощники HTML, такие как TextBoxFor, HiddenFor, DropDownListFor, CheckBoxFor, ... сначала смотрят на ModelState при связывании, а затем в модели.Поэтому, если в вашем действии контроллера вы намереваетесь сделать что-то вроде этого:

[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
public PartialViewResult SaveItemAndProperties(PropertyBuilderViewModel modelValues)
{
    modelValues.Foo = "some new value";
    return PartialView("PropertyBuilderControl", modelmodelValues);
}

убедитесь, что вы удалили это значение из состояния модели, или вы не увидите никаких обновлений после повторного рендеринга представления:

[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
public PartialViewResult SaveItemAndProperties(PropertyBuilderViewModel modelValues)
{
    ModelState.Remove("Foo");
    modelValues.Foo = "some new value";
    return PartialView("PropertyBuilderControl", modelmodelValues);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...