【问题标题】:How do I show a message before redirect如何在重定向之前显示消息
【发布时间】:2017-05-16 09:10:23
【问题描述】:

我正在将一名员工保存到数据库中

当成功时,我想向用户显示一条消息 我为此创建了一个方法:

<div class="MessagePanelDiv">
    <asp:Panel ID="Message" runat="server" Visible="False">
        <button type="button" class="close" data-dismiss="alert">&times;</button>
        <asp:Label ID="LabelTypeMessage" CssClass="messageType" runat="server" />&nbsp;<asp:Literal ID="LiteralMessage" runat="server" />
    </asp:Panel>
</div>

使用 javscript:

 $(document).ready(function () {
     window.setTimeout(function () {
         $(".alert").fadeTo(1500, 0).slideUp(500, function () {
             $(this).remove();
         });
     }, 3000);
 });

以及 Code-Behind 中的 ShowMessage() 方法:

public void ShowMessage(String message, WarningType type)
{
    //temp var to store the message type
    String MessageType;

    //gets the controls from the page
    Panel PanelMessage = this.FindControl("Message") as Panel;
    Label LiteralTypeMessage = PanelMessage.FindControl("LabelTypeMessage") as Label;
    Literal LiteralMessage = PanelMessage.FindControl("LiteralMessage") as Literal;

    //switch case to properly set the message type
    switch (type.ToString())
    {
        case "Succes":
            MessageType = "Success!";
            break;
        case "Info":
            MessageType = "Info!";
            break;
        case "Warning":
            MessageType = "Waarschuwing!";
            break;
        case "Danger":
            MessageType = "Fout!";
            break;
        default:
            MessageType = "";
            break;
    }

    //sets the message and the type of alert, than displays the message
    LiteralTypeMessage.Text = MessageType;
    LiteralMessage.Text = " " + message;
    PanelMessage.CssClass = String.Format("alert alert-{0} alert-dismissable", type.ToString().ToLower());
    PanelMessage.Attributes.Add("role", "alert");
    PanelMessage.Visible = true;
}

现在当员工被保存时,我打电话:

ShowMessage(GetGlobalResourceObject("Global.errors", "SaveSuccess").ToString(), WarningType.Success);

显示消息。这工作正常,但我实现了新页面,所以现在我在插入 Employee 后重定向。

我的问题:如何在添加员工时、在回发之前向用户显示消息,或者如何在用户重定向到的页面上显示消息

【问题讨论】:

  • 您可以在使用 javascript 重定向用户之前显示一条消息。如果您使用 ajax 发布到控制器,则易于实现。

标签: javascript c# asp.net


【解决方案1】:

我编辑了我的函数 ShowMessage 以接受 3 个变量

ShowMessage(String message, WarningType type, String redirect)

并更新了方法:

LiteralTypeMessage.Text = MessageType;
if (string.IsNullOrWhiteSpace(redirect) || redirect == ""){
        LiteralMessage.Text = " " + message;
    }
    else{
        LiteralMessage.Text = " " + message + ", <script>window.setTimeout(function () { $('.alert').fadeTo(1500, 0).slideUp(500, function() {$(this).remove();});window.location = '" + redirect + "'}, 3000);</script>";
    }

PanelMessage.CssClass = String.Format("alert alert-{0} alert-dismissable", type.ToString().ToLower());
PanelMessage.Attributes.Add("role", "alert");
PanelMessage.Visible = true;

所以当字符串重定向为空时,它只会显示消息

但如果不是,它会显示消息并重定向到页面

【讨论】:

  • 这是为我做的,但我可以在 2 天后接受它作为遮阳篷
  • 一个缺点,现在当员工被保存时,用户在重定向之前会在编辑页面上停留几秒钟。这是不可取的。当我完成代码时:保存,重定向和显示消息上传它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-20
  • 1970-01-01
  • 2018-07-29
  • 1970-01-01
  • 2018-07-24
  • 1970-01-01
相关资源
最近更新 更多