【问题标题】:Way to avoid FormCollection for ASP.NET MVC?避免 ASP.NET MVC 的 FormCollection 的方法?
【发布时间】:2009-10-27 19:48:57
【问题描述】:

我对 ASP.NET MVC 非常陌生。

我正在查看来自 ASP.NET MVC 加载项的入门示例。

我看到这样的东西是自动生成的:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int id, FormCollection collection)
{
    try
    {
        // TODO: Add update logic here
        return RedirectToAction("Index");
    }
    catch
    {
        return View();
    }
}

我觉得这很糟糕,因为我想使用实体框架来保存实体状态。我想要类似的东西:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(Person person)
{
    try
    {
        // TODO: Add update logic here
        return RedirectToAction("Index");
    }
    catch
    {
        return View();
    }
}

请注意,我取出 FormCollection 并将其替换为 Person 类。 - 我希望这样可以避免使用魔法字符串。 - 保存实体状态。 - 更明确。

这可能吗?

/与MVC混淆

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    是的,这是可能的!您的表单元素需要与您尝试表示的模型的属性具有相同的名称。这个过程称为绑定,如果您查看 ModelBinder 对象,您会发现更多。

    有关更多信息,请查看以下问题:ASP.NET MVC example of editing multiple child records

    【讨论】:

    【解决方案2】:

    是的,尽管我强烈建议使用专用的演示/编辑模型而不是使用您的实体。尽管如此,如果您的表单中有足够的信息来填充Person所有不可为空的属性,那么您显示的内容将起作用。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    • 1970-01-01
    • 2011-03-14
    • 2014-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多