代码之家  ›  专栏  ›  技术社区  ›  Andre Gallo

ASP.NET MVC:使用编辑操作时如何获取实际对象?

  •  1
  • Andre Gallo  · 技术社区  · 16 年前

    我刚刚开始使用asp.net mvc,我有一个非常基本的问题:

    如果我有一个视图显示有关 System.Web.Mvc.ViewPage<Foo> ,将表单值传递给FooController上的编辑操作时,如何获取实际对象? 默认情况下,我得到了编辑操作的以下实现:

    public ActionResult Edit(int id, FormCollection collection)
    

    public ActionResult Edit(int id, Foo myObject)
    

    编辑:

    抱歉,伙计们,再多了解一点背景知识,这样你们就明白我在想什么了……因为我有自己的框架来重播我对实体所做的更改,所以我不需要重新查询实体并使用UpdateModel()方法。我最后做的就是有这样一种方法:

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Edit(Foo myObject)
    {
    }
    

    我不知道,但那很好用。多亏了这个答案,我才找到了这篇文章: http://www.haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

    4 回复  |  直到 16 年前
        1
  •  0
  •   tarn    16 年前

    您可能会编写一些疯狂的类型转换器,但是有一些helpers方法可以将FormCollection中的值映射到Foo对象上。

    EDIT:我认为它是作为一个扩展方法实现的,名为UpdateFrom(…)

        2
  •  0
  •   Community CDub    7 年前

    相关问题:
    How to pass complex type using json to ASP.NET MVC controller

    这可能会满足你的需要。

        3
  •  0
  •   Davide Vosti    16 年前

    如果您需要了解如何正确操作,请访问 nerddinner.com 并下载源代码。这个网站是由Scott Gu,Phil Haack和其他人开发的,展示如何做MVC。。。

        4
  •  0
  •   Adrian Grigore    16 年前

    实现编辑方法的最简单方法是使用控制器基类中已包含的UpdateModel方法,如下所示:

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Edit(int id, FormCollection collection)
    {
    
        LinqEntity entity = MyRepository.GetEntity(id);
        UpdateModel(entity);
    
        //validate and save your entity here
    
    }
    

    编辑:我也刚刚开始学习ASP.NETMVC并发现 ScottGu's MVC Walkthrough