【问题标题】:asp.net mvc search and edit viewsasp.net mvc 搜索和编辑视图
【发布时间】:2009-04-20 20:40:03
【问题描述】:
我正在考虑创建一个允许基于 ajax 的搜索和编辑功能的视图。如果对我正在考虑的结构有任何反馈,我将不胜感激!
结构将包括
一个文本框和一个搜索按钮
按钮的提交导致动作搜索被击中,并返回一个部分
- 在命名 div "itemDisplay##" 中找到的项目的文本表示(## 是找到的项目的 ID)
- 名为编辑的按钮
- 占位符 div,其 id 为找到的项目“itemEdit##”
当用户点击编辑按钮时,会请求一个局部视图 (Edit.ascx) 并填充命名的 div itemEdit##
Edit.ascx 有保存和取消按钮。
成功保存并取消隐藏编辑div并显示原itemDisplay##
edit.ascx 中会显示保存失败。
【问题讨论】:
标签:
asp.net-mvc
partial-views
【解决方案1】:
这些听起来像是离散的动作,因此在它的实现中并不是特别 RESTful。通常我会有一个带有过滤的列表动作——这个过滤可以通过 AJAX 完成,因为它返回的基本上是相同的视图。单击特定项目可能会将我带到详细信息视图 - 带有一个编辑按钮。我可能还会在列表中包含一个编辑按钮,在这种情况下,单击它会将我带到编辑模式下的详细信息页面。但是,列表、查看和编辑都是不同的操作,并且具有不同的 URL。单击“查看”或“编辑”中的列表按钮将使我返回“列表”操作。单击编辑中的保存按钮将使我返回到该项目的视图——这提供了该项目已更新的确认。编辑中的错误会使用适当的消息呈现编辑视图。
我的经验法则是在视图的上下文没有变化时使用 AJAX,但在调用新操作(新上下文)时使用完整请求 (GET/POST)。这有助于保持接口 (URL) RESTful。当然,你可以用任何你想做的方式来做,但是 MVC 让 RESTful URL 更容易,而 RESTful URL 让用户更容易为页面添加书签以轻松返回 - 正是因为它们映射到一个特定的操作特定的数据项。
【解决方案2】:
搜索可以按照您的描述以“ajax 方式”完成。使用相同的 url / page 来编辑和显示详细信息会使代码混乱,并且正如另一个答案中所说的那样不是很安静,所以我会为此使用单独的 URL 和页面。