我在任何应用程序,在那里我有以下功能非常典型的情况:在asp.net中查看和控制器mvc3 - 控制器应该一对一匹配一个视图吗?
- 创造新的纪录
- 编辑现有记录
- 因此其他无关的动作
IMO,创建并且编辑应该由相同的视图服务,但是不同的操作。但似乎我必须使动作名称与视图名称相匹配......您是否会使用部分视图来执行此操作?我宁愿不将这种情况复杂化 - 这非常简单,并且几乎出现在每个Web应用程序中。
我在任何应用程序,在那里我有以下功能非常典型的情况:在asp.net中查看和控制器mvc3 - 控制器应该一对一匹配一个视图吗?
IMO,创建并且编辑应该由相同的视图服务,但是不同的操作。但似乎我必须使动作名称与视图名称相匹配......您是否会使用部分视图来执行此操作?我宁愿不将这种情况复杂化 - 这非常简单,并且几乎出现在每个Web应用程序中。
行动可以返回一个diferent名称的看法是这样的:
public ActionResult OneName()
{
return View("OtherName");
}
如果不指定视图名称(视图(“”),那么该观点与动作的名称
视图部分视图是一个很好的答案。我建议你看看MvcScaffold NuGet包是如何做到的。 See here或在Visual Studio中获取包。
我只是完全使用相同的动作,并使用该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);
}
}
如果这在您的方案中无法正常工作,那么您几乎不会留下部分视图。
''我会完全使用相同的动作,并使用ID来确定这是一个新记录还是现有的“ - 可怕的,可怕的设计。 – Dismissile
@Dismissile我会接受该评论作为接受的答案... +1 – gdoron
@Dmissmissile它如何算作可怕的设计?通常认为Id = 0是新记录。几乎每一个软件都使用ID来跟踪记录。如果这是糟糕的设计,我们只能渲染全球99%的应用程序。所以,请证明你的观点。 –
这就是我正在寻找的! – sarsnake