【问题标题】:ASP.NET MVC: How can I get my actual object when using my Edit action?ASP.NET MVC:使用编辑操作时如何获取实际对象?
【发布时间】:2009-03-21 08:01:34
【问题描述】:

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

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

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

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

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

    这可能会满足您的需求。

    【讨论】:

      【解决方案2】:

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

      编辑:我认为它是作为扩展方法实现的,称为 UpdateFrom(..)

      【讨论】:

        【解决方案3】:

        如果您需要了解操作方法,请访问nerddinner.com 并下载源代码。该网站由 Scott Gu、Phil Haack 和其他人开发,旨在展示如何进行 MVC...

        【讨论】:

          【解决方案4】:

          实现编辑方法的最简单方法是使用已包含在 Controller 基类中的 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.NET MVC,发现ScottGu's MVC Walkthrough 非常有用。它展示了如何实现一个简单的 MVC 网站(您可以在 nerddinner.com 上看到它),并涵盖了许多像上面这样的普通主题。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-02-21
            相关资源
            最近更新 更多