当记录存在时,如何最好地处理停止删除行?

时间:2011-11-28 12:09:31

标签: asp.net-mvc razor

我有一个显示在我的MVC Razor屏幕上的图书记录列表

1  edit   delete   Harry Potter 1
2  edit   delete   Harry Potter 2
..
3  edit   delete   Harry Potter 25

当用户点击[删除]链接时,控件将进入删除方法 控制器。然后显示MVC Razor屏幕,允许用户确认 删除(如果没有库存)或取消删除(如果存在库存)。

我的问题是“我应该在哪里检查库存”我应该在Razor视图中查看 声明如下:

@if (@Model.xxx.Count == 0) {
   show the user a [confirm delete] button 
}

@if (@Model.xxx.Count != 0) {
   show the user a [cancel button] and a message saying "cannot delete"
}

在视图中执行所有操作似乎很笨,但控制器似乎并不是正确的位置,如果在控制器中,那么我不确定如何编写它。

2 个答案:

答案 0 :(得分:3)

您应该在视图和控制器中查看库存:

  • 您的视图应该只向用户显示有效的操作,向他显示一个删除按钮,该按钮无法保证根据某些不明确的推理实际删除记录是没有意义的。
  • 您的控制器还应检查是否允许执行操作,否则您的控制器可以直接访问,资源仍然可以删除。

答案 1 :(得分:2)

如果用户无法删除书籍,则不应首先显示删除链接。在用户实际尝试执行操作之前禁止用户执行任何操作,而不是让用户尝试执行您告诉他不能执行的操作,这样做更加用户友好。

所以基本上你需要在生成列表时进行Model.xxx.Count != 0检查。但是,您仍需要在删除控制器中执行相同的验证,以避免对无效数据执行操作(正如您在任何控制器中所做的那样)。