May*_*ayo 6 asp.net-mvc views single-responsibility-principle
我见过的大多数ASP.NET MVC示例都描述了用户正在查看对象(或对象集合)然后从该页面移动到显示用户完成的表单的情况.在提交具有良好输入的表单后,用户被重定向回显示对象(或列表)的页面,并且用户可以看到他们的更改成功.
我遇到了每个业务规则都没有视图或列表页面的情况.
在ASP.NET MVC中,这种场景有哪些好的方法?
在使用Classic ASP和ASP.NET的过去,我会处理输入,然后向用户显示成功消息或带有错误的表单 - 所有这些都来自同一页面.这似乎违背了最佳实践(SRP,视图中没有逻辑等).
一种简单的方法是重定向到一个新页面,告诉用户他们的更改是成功的,但随后用户可以随时访问该页面.如果我开始使用逻辑来防止这种情况(即tempdata),那么解决方案就会变得很脏.
我可以重定向到目标网页,但没有确认.也许我可以依赖一个消息系统,当他们返回登录页面时向最终用户显示确认信息?
我使用具有 ShowMessage 方法的基本控制器。此方法接收要显示的消息(或资源键,如您所愿)和指示消息类型(成功、错误、通知等)的枚举。在返回操作之前,我使用适当的消息调用 ShowMessage,例如
\n\nShowMessage("A nice message here.", MessageType.Success);
然后在母版页中,我调用了一个辅助方法,该方法呈现一个共享的部分视图,该视图显示消息(如果有)。TempData消息使用固定密钥存储。您可以使用Blueprint css 框架中显示的样式根据消息的类型来显示消息。
这是一些代码:
\n\npublic void ShowMessage(string message, MessageType messageType)\n{\n var messageViewModel = new MessageViewModel(message, messageType);\n TempData["Message"] = messageViewModel;\n }\nRun Code Online (Sandbox Code Playgroud)\n\n局部视图:
\n\n<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MyApp.Models.MessageViewModel>" %>\n<%var className = Model.MessageType.ToString().ToLower(); %>\n<div class="<%=className%>">\n <%=Html.Encode(Model.Message)%>\n</div>\nRun Code Online (Sandbox Code Playgroud)\n\n我\xc2\xb4m确信可能有更好的方法,比如使用过滤器,但这种方法对我非常有帮助。
\n| 归档时间: |
|
| 查看次数: |
2274 次 |
| 最近记录: |