【问题标题】:Passing an alert from controller to view将警报从控制器传递到视图
【发布时间】:2013-08-22 09:25:49
【问题描述】:

我有一个 asp.net mvc4 应用程序,我想在其中添加一个 javascript 警报

在视图中

   @{
        try
        {
         string str = ViewData["Alert"].ToString();
            <script>alert(@str); </script>
        }
        catch { }
    }

在我的控制器中

public ActionResult Reserver() {
          User u = (User)Session["user"];
        if (u == null) return RedirectToAction("Index", "Home");
        string _fonction = _equipe.Get_Status_User(u.Id_user);
        if (_fonction != "User") return RedirectToAction("Index", "Home");

        int id_affaire = int.Parse(Request.Params["id_affaire"]);
        int id_vehicule = int.Parse(Request.Params["matricule"]);
        int periode;
        try
        {
            periode = int.Parse(Request.Params["periode"]);
        }
        catch { periode = 0; }
        int jours;
        try
        {
            jours = int.Parse(Request.Params["nbr_jours"]);
        }
        catch { jours = 0; }
        string date;
        try
        {
             date = Request.Params["date"];
            string[] tab = date.Split('/');
            date = tab[2] + "-" + tab[0] + "-" + tab[1];
        }
        catch {
            ViewData["Alert"] = "Veuillez préciser la date stp";
            return RedirectToAction("Reserver_Véhicule");
        }
        if (DateTime.Parse(date) <= DateTime.Now) { ViewData["Alert"] = "Veuillez taper une date valide stp"; return RedirectToAction("Reserver_Véhicule"); }
            Owner resp = new Owner();
            if (resp.Exist_Affectation(DateTime.Parse(date), periode, id_vehicule)) { ViewData["Alert"] = "La véhicule est indisponible"; return RedirectToAction("Reserver_Véhicule"); }
            if(jours > 0 )
            {
                for (int i = 0; i < jours; i++)
                {
                    if (resp.Exist_Affectation(DateTime.Parse(date).AddDays(i), 0, id_vehicule)) { ViewData["Alert"] = "La véhicule est indisponible"; return RedirectToAction("Reserver_Véhicule"); }
                    if (resp.Exist_Affectation(DateTime.Parse(date).AddDays(i), 1, id_vehicule)) { ViewData["Alert"] = "La véhicule est indisponible"; return RedirectToAction("Reserver_Véhicule"); }
                }

                for (int i = 0; i < jours; i++)
                {
                    resp.Create_Affectation(u.Id_user, id_affaire, id_vehicule, DateTime.Parse(date).AddDays(i), 1);
                    resp.Create_Affectation(u.Id_user, id_affaire, id_vehicule, DateTime.Parse(date).AddDays(i), 2);
                }
                return View("Index");

            }

            if (periode > 0)
            {
                if (resp.Exist_Affectation(DateTime.Parse(date), periode, id_vehicule)) { ViewData["Alert"] = "La véhicule est indisponible"; return RedirectToAction("Reserver_Véhicule"); }
                resp.Create_Affectation(u.Id_user, id_affaire, id_vehicule, DateTime.Parse(date), periode);
                return View("Index");
            }
            bool b1 = resp.Exist_Affectation(DateTime.Parse(date), 1, id_vehicule);
            bool b2 = resp.Exist_Affectation(DateTime.Parse(date), 2, id_vehicule);
            if (b1 == true || b2 == true) { ViewData["Alert"] = "La véhicule est indisponible"; return RedirectToAction("Reserver_Véhicule"); }
            resp.Create_Affectation(u.Id_user, id_affaire, id_vehicule, DateTime.Parse(date), 1);
            resp.Create_Affectation(u.Id_user, id_affaire, id_vehicule, DateTime.Parse(date), 2);

            return View("Index");


    }

问题是尽管控制器中ViewData["Alert"] 的值不为空,但警报没有出现。

我该如何解决这个问题?

【问题讨论】:

  • 尝试将您的行更改为此
  • 没有改变同样的结果
  • 试试这个&lt;script&gt;alert(str); &lt;/script&gt;

标签: javascript jquery .net asp.net-mvc razor


【解决方案1】:

我将ViewData 更改为TempData,它的工作原理:

 @{
        try
        {
            string str = TempData["Alert"].ToString();

    <script>alert('@Html.Raw(@str)');
                             </script>
        }
        catch { }
        }

我找到了解决方案in this link

【讨论】:

  • 如果您的 TempData["Alert"] 为空,那么会发生什么.. ToString 将抛出异常。
  • 如果 TempData["Alert"] 为 null 则不显示警报,因此这是视图的第一次加载
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多