toastr通知没有出现mvc 4

时间:2014-11-03 15:11:49

标签: asp.net-mvc asp.net-mvc-4 toast

嗨,我是MVC的新手,我一直在尝试建立一个我一直关注的教程,试图在我的mvc应用程序中成功编辑某些内容时出现一个toastr消息。我想我已经完成了所有事情,但通知却没有弹出。

    bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css",
            "~/Content/toastr.css"));

    bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                    "~/Scripts/jquery-{version}.js",
        "~/Scripts/toastr.js"));

我在我的脚本和我的CSS中添加了烤面包机,并且两个包都在布局视图中呈现。 在我的编辑操作中,如果成功,我将重定向到索引操作并添加消息。

         [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Edit(Restaurant restaurant)
    {
        if (ModelState.IsValid)
        {
            db.Entry(restaurant).State = EntityState.Modified;
            db.SaveChanges();
            return RedirectToAction("Index", new { message = "Added" });
        }
        return View(restaurant);
    }


    public ActionResult Index(string message )
    {

        if (!string.IsNullOrEmpty(message))
        {
            ViewBag.message = message;
        }

        return View(db.Restaurants.ToList());
    }

然后在索引操作中我正在检查它是否为空,如果不是我将消息传递给viewbag。然后在索引视图中,我正在检查viewbag是否为空

        @model IEnumerable<OdeToFoodNov1.Models.Restaurant>

     @{
    ViewBag.Title = "Index";
     }

    <h2>Index</h2>

   <p>
    @Html.ActionLink("Create New", "Create")
   </p>
   <table>
     <tr>
     <th>
        @Html.DisplayNameFor(model => model.Name)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.City)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.Country)
    </th>
    <th></th>
</tr>

 @foreach (var item in Model) {
<tr>
    <td>
        @Html.DisplayFor(modelItem => item.Name)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.City)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.Country)
    </td>
    <td>
        @Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
        @Html.ActionLink("Reviews", "Index", "Reviews", new { id=item.Id }, null) |
        @Html.ActionLink("Delete", "Delete", new { id=item.Id })
    </td>
</tr>
  }

</table>


  @if (ViewBag.message != null)
    {

<script type="text/javascript">
    $(document).ready(function () {
        toastr.success('Added')
    })
</script>
   }

然而,当我回到索引视图时,我没有收到任何通知?感谢任何帮助,如果我遗漏了一些明显的东西,那就很抱歉。

1 个答案:

答案 0 :(得分:1)

大多数MVC布局文件都包含一个名为脚本的可选部分(除非作者因某种原因将其删除)。

在布局文件中查找如下所示的行

@Scripts.Render("~/bundles/jquery")
@RenderSection("scripts", required: false)

在这种情况下,任何想直接注入视图的Javascript都会在加载 jQuery之后加载到最终的HTML 中。

尝试做这样的事情,以便确保将注入的JS加载到可选脚本部分

@section scripts {
    @if (ViewBag.message != null)
    {
    <script type="text/javascript">
        $(document).ready(function () {
            toastr.success('Added')
        });
    </script>
    }
}