2011-11-22 31 views
2

我在任何应用程序,在那里我有以下功能非常典型的情况:在asp.net中查看和控制器mvc3 - 控制器应该一对一匹配一个视图吗?

  • 创造新的纪录
  • 编辑现有记录
  • 因此其他无关的动作

IMO,创建并且编辑应该由相同的视图服务,但是不同的操作。但似乎我必须使动作名称与视图名称相匹配......您是否会使用部分视图来执行此操作?我宁愿不将这种情况复杂化 - 这非常简单,并且几乎出现在每个Web应用程序中。

回答

2

行动可以返回一个diferent名称的看法是这样的:

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

如果不指定视图名称(视图(“”),那么该观点与动作的名称

视图
+0

这就是我正在寻找的! – sarsnake

0

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

-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); 
    }  
} 

如果这在您的方案中无法正常工作,那么您几乎不会留下部分视图。

+3

''我会完全使用相同的动作,并使用ID来确定这是一个新记录还是现有的“ - 可怕的,可怕的设计。 – Dismissile

+1

@Dismissile我会接受该评论作为接受的答案... +1 – gdoron

+0

@Dmissmissile它如何算作可怕的设计?通常认为Id = 0是新记录。几乎每一个软件都使用ID来跟踪记录。如果这是糟糕的设计,我们只能渲染全球99%的应用程序。所以,请证明你的观点。 –

相关问题