将确认或错误消息传递回视图的好方法是什么?

Jam*_*lse 2 asp.net asp.net-mvc razor asp.net-mvc-3

当用户单击表单上的提交按钮时,我想向用户返回成功/失败消息,并且我想知道将消息发送回用户的最佳方式是什么.

例如,在登录表单上,如果用户输入了错误的密码,我希望视图重新加载,并显示一条消息,告知他们登录失败.或者在更新表单上,原始视图会显示一条消息,指出更新成功.

我的想法是让一些部分视图或HTML帮助程序查找ViewBag属性,如"ErrorMessage"或"SuccessMessage",并在这些属性具有值时有条件地显示自己.这些组件可以添加到_Layout中,也可以手动添加到需要它们的每个表单中.

编辑

我发现ValidationSummary方法接受了是否排除属性错误的参数,这意味着您可以使用它来显示登录/注册失败的时间.但似乎存在一个错误,即使没有错误,仍会生成验证摘要.

Rob*_*son 7

这是一个很好的问题,也是我最近在新的MVC应用程序中尝试解决的问题.对我来说,ModelState.AddModelError可以用于错误,但在传达成功或警告消息等内容时不起作用.

这是我最近决定采取的一种方法,我欢迎任何反馈:

  1. 我创建了一个名为Notification的类和一个名为NotificationType的枚举. NotificationType有4个值:Success,Error,WarningInfo. 通知具有"消息"和"类型"属性.

  2. 我有一个名为NotificationManager的静态类,它在HttpRequest的生命周期中保存Notification对象的实例(使用用户的Session对象).这个想法是任何控制器都可以在执行Action期间添加任意数量的Notification对象,具体取决于它"告诉"用户需要什么.

  3. 我有一个自定义的HtmlHelper,我在一个主页面中调用一次(即Html.NotificationSummaryFor()),它接受一个I​​Enumerable of Notifications(即NotificationManager.Notifications)并为每个Notification呈现一个带有子LI的UL.然后我使用CSS类来根据'NotificationType'设置那些通知LI的样式(红色表示错误,黄色表示警告,绿色表示成功等).HtmlHelper还负责在将其呈现给View后清除来自管理器的通知.

这个实现非常简单并且有局限性,但总的来说,我发现拥有这样的框架可以确保在同一个应用程序上工作的开发人员团队能够以一致的方式提供通知,这对可用性和可维护性非常重要.