【问题标题】:How to show Message Box in MVC ASP.NET without return View()如何在 MVC ASP.NET 中显示消息框而不返回 View()
【发布时间】:2017-05-18 01:09:22
【问题描述】:

我是stackoverflow的新手,也是asp.net的新手,我想问一下如何在mvc asp.net中显示消息框。这是我的代码,但它会返回 NullReferenceException。感谢您的帮助。`

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult myfunction(MyViewModels myModel)
    {
        System.Web.UI.ScriptManager script_manager = new System.Web.UI.ScriptManager();

        if (ModelState.IsValid) {
            createRequest(myModel);
            script_manager.Page.ClientScript.RegisterStartupScript(this.GetType(), "showMyMessage", "ShowMessage('Requested Successfully.');", true);
            return RedirectToAction("GeneratePDF", "Forms", myModel);   
        }
        else
        {
            script_manager.Page.ClientScript.RegisterStartupScript(this.GetType(), "showMyMessage", "ShowMessage('Requested failed.');", true);
            return RedirectToAction("Index");
        }
    }`

【问题讨论】:

  • RegisterStartupScript() 是 Web 表单代码,而不是 MVC。使用 javascript。
  • 您应该通过 AJAX 请求将错误消息返回为JavaScriptResult,并使用alert 方法在带有JS 的客户端显示消息框。
  • 我建议了解前端编码,在 Javascript/HTML/CSS 中显示模式/弹出框是正确的方法。大约在 1999 年 Microsoft ASP.NET 发明此选项时,从后端将脚本注入前端并不是一个好主意。我从未见过有人在 ASP.NET MVC 应用程序中使用 ScriptManger,这是一个 Web 窗体实现概念
  • 你是如何在 ASP.NET MVC 应用程序中引用 ScriptManager 的? stackoverflow.com/questions/4740326/…stackoverflow.com/questions/16587704/…

标签: c# asp.net asp.net-mvc asp.net-mvc-4


【解决方案1】:

做同样的事情有不同的方法,我添加了三种不同的方法,你可以使用,在不同的时间你需要什么。

方式1:[推荐用于您的要求,无需返回视图()]

public ContentResult HR_COE()
       {


           return Content("<script language='javascript' type='text/javascript'>alert     ('Requested Successfully ');</script>");
       }

内容结果类的官方定义:

表示用户定义的内容类型,它是操作方法的结果。

来源: https://msdn.microsoft.com/en-us/library/system.web.mvc.contentresult(v=vs.118).aspx

其他有用的例子(如果需要): http://www.c-sharpcorner.com/UploadFile/db2972/content-result-in-controller-sample-in-mvc-day-9/

https://www.aspsnippets.com/Articles/ASPNet-MVC-ContentResult-Example-Return-String-Content-from-Controller-to-View-in-ASPNet-MVC.aspx

其他方式:

方式2: 控制器代码:

public ActionResult HR_COE()
       {
           TempData["testmsg"] = "<script>alert('Requested Successfully ');</script>";
           return View();
       }

查看代码:

@{
    ViewBag.Title = "HR_COE";
}

<h2>HR_COE</h2>

@if (TempData["testmsg"] != null)
{
   @Html.Raw(TempData["testmsg"]) 
}

方式 3: 控制器代码:

public ActionResult HR_COE()
      {
          TempData["testmsg"] = " Requested Successfully ";
          return View();

      }

查看代码:

@{
    ViewBag.Title = "HR_COE_Without using raw";
}

<h2>HR_COE Without using raw</h2>

   @if( TempData["testmsg"] != null)
   {
<script type="text/javascript">
       alert("@TempData["testmsg"]");
</script>
   }

我个人已经使用了所有三种方式,并且得到了预期的输出。所以希望它一定会对你有所帮助。

请让我知道您的想法或反馈

谢谢 卡提克

【讨论】:

  • 我很高兴@Mike,很高兴它帮助了你。希望以后对其他人也有帮助..:)
  • 哦还有一件事,当框出现时,多少秒后页面变白了,怎么办才不会变白?
  • @Mike 那是因为您没有重定向到任何其他视图()。如果您不想要白屏,那么您应该重定向到其他视图或相同视图。为此,请以上述答案中提到的其他方式使用其中一种方式。希望这会有所帮助。谢谢 karthik
  • 非常感谢先生 :)
  • 再次高兴和愉快的分享先生..:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-27
  • 1970-01-01
相关资源
最近更新 更多