代码之家  ›  专栏  ›  技术社区  ›  Mayo

ASP.NETMVC向最终用户显示操作成功

  •  6
  • Mayo  · 技术社区  · 16 年前

    大部分ASP.NET我看到的MVC示例描述了这样的场景:用户正在查看一个对象(或对象集合),然后从该页面移动到显示用户完成的表单的页面。提交输入正确的表单后,用户将被重定向回显示对象(或列表)的页面,用户可以看到他们的更改成功。

    在这个场景中有哪些好的方法ASP.NETMVC?

    在过去使用经典的ASP和ASP.NET,我将处理输入,然后向用户显示一条成功消息或包含错误的表单-所有这些都来自同一页。这似乎违背了最佳实践(SRP、视图中没有逻辑等等)。

    我可以重定向到登录页,但没有得到确认。也许我可以依赖一个消息系统,当最终用户返回登录页时,它会向他们显示一个确认信息?

    2 回复  |  直到 16 年前
        1
  •  3
  •   uvita    16 年前

    我使用具有ShowMessage方法的基本控制器。此方法接收要显示的消息(或资源键,如您所愿)和指示消息类型(成功、错误、通知等)的枚举。在返回操作之前,我使用适当的消息调用ShowMessage,例如。

    ShowMessage("A nice message here.", MessageType.Success);

    然后在母版页中,我有一个对helper方法的调用,该方法呈现一个共享的部分视图,在有消息的情况下显示消息。消息存储在 TempData 用一把固定的钥匙。您可以使用 Blueprint css framework 用于根据消息类型显示消息。

    public void ShowMessage(string message, MessageType messageType)
    {
        var messageViewModel = new MessageViewModel(message, messageType);
        TempData["Message"] = messageViewModel;
     }
    

    局部视图:

    <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MyApp.Models.MessageViewModel>" %>
    <%var className = Model.MessageType.ToString().ToLower(); %>
    <div class="<%=className%>">
        <%=Html.Encode(Model.Message)%>
    </div>
    

    我相信可能有更好的方法,比如使用过滤器,但是这种方法对我很有帮助。

        2
  •  1
  •   Omu    16 年前

    您可以在viewdata中放置一些内容,并在页面中执行如下操作

    <% if (viewdata["success"] != null){%>
    <script>
    $("#successDialog").dialog('open');
    </script>
    <%}%> 
    

    你的用户会看到一个弹出窗口告诉他成功 http://jqueryui.com/demos/dialog/

    推荐文章