asp.net mvc3中的视图和控制器 - 控制器应该与视图一对一匹配?

时间:2011-11-22 20:33:49

标签: asp.net-mvc-3 views action

我在任何应用程序中都有一个非常典型的情况,我有以下功能:

  • 创建新记录
  • 编辑现有记录
  • 所以其他不相关的行动

IMO,创建和编辑应该由相同的视图提供,但不同的操作。但似乎我必须让动作名称与视图名称匹配....你会为此使用部分视图吗?我宁愿不要使这种情况复杂化 - 这非常简单,几乎出现在每个网络应用程序中。

3 个答案:

答案 0 :(得分:2)

Action可以通过这种方式返回具有不同名称的视图:

public ActionResult OneName()
{
    return View("OtherName");
}

如果您未指定视图名称(视图(“”)),则视图将是具有操作名称的视图

答案 1 :(得分:0)

部分观点是一个很好的答案。我建议你看看MvcScaffold NuGet包是如何做到的。 See here或在Visual Studio中获取包。

答案 2 :(得分:-1)

我只是完全使用相同的操作并使用ID来确定这是新记录还是更新现有记录:

/Forum/Post/Edit/0创建新记录

/Forum/Post/Edit/10457更新ID为10457的记录

但是,由于您坚持使用不同的操作,为什么不简单地创建2个操作,两者都返回相同的视图?

public class PostController : Controller
{
    public ActionResult Create(Post post)
    {
        // work your magic...

        return View("Edit", post);
    }

    public ActionResult Update(Post post)
    {
        // work your magic...

        return View("Edit", post);
    }    
}

如果这在您的方案中不起作用,那么您几乎可以使用部分视图。