如何显示“已保存!”制作Redirect()后的消息..?

时间:2014-04-14 06:29:01

标签: javascript jquery html css redirect

我目前正在从事MVC4项目。

想象一下以下场景:


(1)允许用户向多个表添加数据,之后需要通过点击提交进行确认。 <input type="submit" value="" id="saveBtn" title="Save" />没有价值的原因是因为我将CSS应用于提交。

(2)之后,为了避免以前的错误阻止刷新页面重复数据,我需要在控制器中重定向用户:return Redirect("Edit?Id=" + id);

(3)完成重定向()后,我想显示一条简单的消息,上面写着&#34;已保存!&#34;延迟5秒。我不想要alert("Saved!");


我目前有一个伪解决方案,但不是首选。它是jQuery中的简单点击功能:

CSS

.successMessage {
    color: darkgreen;
}

HTML

<div class="successMessage" style="display: none;">Saved!</div>

JS

$('#saveBtn').click(function () {
    $(".successMessage").delay(500).show(0);
});

问题在于,由于我Redirect();用户,我的消息不能延迟使用此解决方案&#34;。在制作Redirect();后,该消息将不会再次显示。

什么是更好的方法来获得“延迟”#39;信息?提前谢谢。

2 个答案:

答案 0 :(得分:2)

在提交操作中添加TempData,并在页面准备好时确认TempData是否具有值,在视图中显示延迟消息。

动作:

//save info
TempData["Message"]="Saved!";
return Redirect("Edit?Id=" + id)

查看:

string message=TempData["Message"]==null?"":TempData["Message"].ToString();
@if(message!="")
{
    <div class="successMessage" style="display: none;">@message</div>
    <script type='text/javascript'>
      $(document).ready(function(){
         $(".successMessage").delay(500).show(0);
      })
    </script>
}

答案 1 :(得分:0)

显示通知消息的最佳解决方案是使用TempData["Message"]来存储值,并在每个页面上执行此操作 -

 if (TempData["Message"] != null)
 {
   ViewBag.Message = TempData["Message"];
 }

现在在视图中,

        <div>
            @if (ViewData["Message"] != null)
            {
                <div>Saved!</div>
            }
       </div>