【发布时间】:2017-04-13 20:24:14
【问题描述】:
我在任何应用程序中都有一个非常典型的情况,我有以下功能:
- 创建新记录
- 编辑现有记录
- 其他不相关的操作
IMO,创建和编辑应该由相同的视图提供服务,但操作不同。但看来我必须让动作名称与视图名称相匹配......你会为此使用部分视图吗?我不想让这个场景复杂化——它非常简单,几乎出现在每个网络应用程序中。
【问题讨论】:
标签: asp.net-mvc-3 views action
我在任何应用程序中都有一个非常典型的情况,我有以下功能:
IMO,创建和编辑应该由相同的视图提供服务,但操作不同。但看来我必须让动作名称与视图名称相匹配......你会为此使用部分视图吗?我不想让这个场景复杂化——它非常简单,几乎出现在每个网络应用程序中。
【问题讨论】:
标签: asp.net-mvc-3 views action
Action 可以通过这种方式返回具有不同名称的视图:
public ActionResult OneName()
{
return View("OtherName");
}
如果您不指定视图名称 (View("") 那么视图将是具有操作名称的视图
【讨论】:
部分视图是一个很好的答案。我建议你看看 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);
}
}
如果这在您的场景中不起作用,那么您几乎只剩下部分视图。
【讨论】:
"I would simply use the same action altogether and use the ID to determine if this is a new record or an existing one" - 糟糕,糟糕的设计。