Как получить TryUpdateModel для обновления дочернего объекта также в Asp.net MVC2 - PullRequest
1 голос
/ 19 августа 2010

У меня есть объект (Object1), который содержит дочерний объект (Child). Таким образом, вы получите доступ к дочернему элементу с помощью Object1.Child. В моем проекте ASP.NET MVC2 я получил POST-ответ на метод create. FormCollection содержит свойства для объектов Object1 и Child. Кажется, я не могу обновить дочерний объект с помощью функции TryUpdateModel.

[HttpPost]
    public ActionResult Create(FormCollection collection)
    {
        Object1 obj = new Object1();
        obj.Child = new Child();
        if (TryUpdateModel<Object1>(obj, "Object1", new[] { "ObjectName", "Child.ChildName" }))
        {
            // At this point, "ObjectName" is filled in, but "Child.ChildName" is not.
            context.Object1s.AddObject(obj);
            context.SaveChanges();
            return RedirectToAction("Index");
        }
        return View(new Object1_ViewModel(obj));
    }

Любая помощь приветствуется.

1 Ответ

1 голос
/ 19 августа 2010

Если у вас строго типизированное представление, вы можете попытаться сделать что-то вроде

public ActionResult Create(Object1 obj)

Я не уверен, что механизм связывания по умолчанию будет переносить любые дочерние объекты.Если это не сработает, вам, возможно, придется свернуть свою собственную модель Binder.См. Следующие ссылки о том, как можно написать:

http://www.codethinked.com/post/2009/01/08/ASPNET-MVC-Think-Before-You-Bind.aspx

http://www.codethinked.com/post/2010/04/12/Easy-And-Safe-Model-Binding-In-ASPNET-MVC.aspx

ASP.NET MVC2 - Примеры связывателя пользовательской модели

http://codeisvalue.wordpress.com/2010/02/10/customizing-model-binder-in-asp-net-mvc/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...