如何使_Layout.cshtml中的导航栏中的徽章获得价值

时间:2018-09-02 18:32:22

标签: c# asp.net-mvc visual-studio

在我的ControllerWarnings的所有应用程序信息导航中,如何制作_Layout.cshtml导航栏中的徽标?

在我的ControllerWarning中,我有一个函数,当重新请求时,它将在Json中返回一个数值。

namespace VS.Controllers
{
    public class ControllerWarning : Controller
    {
        private VSContext db = new VSContext();

        public JsonResult GetWarning(string user)
        {
            DateTime dt = DateTime.Now.Date;
            int contWarning = 0;

            var listaAvisos = db.Warnings.Where(a => a.User== user).ToList();
            var l = new List<Aviso>();

            foreach (var item in listaAvisos)
            {
                var res = item.Data - dt;
                item.QtdDias = res.Days;

                if (res.Days <= 5 && item.Enviado != true)
                {
                    contWarning++;
                }
            }

            return Json(contWarning);
        }
      }

      public ActionResult Index(){...}
      public ActionResult Details(int? id){...}
      public ActionResult Details(Warning warning){...}
 }

位于_Layout.cshtml中的导航栏具有一个徽标,应收集从WarningController返回的GetWarning(字符串用户)返回

<li>
    @Html.ActionLink("Warning", "Index", "Warnings")
         <span class="badge">

                 @*HERE VALUE RECEIVED GETWARNING*@
                 GetWarning(string user)

         </span>
</li>

1 个答案:

答案 0 :(得分:2)

您可以让您的操作方法返回徽章的HTML,其中还包括数据(警告编号)。

public class WarningController : Controller
{
   public ActionResult Badge()
   {
      int contWarning = 10; // temp hard coded value for demo;
      // Replace the hard coded value 
      // with your existing code to get the data from database
      return PartialView("Badge",contWarning);
   }
}

现在将Badge.cshtml类型严格地键入为int类型的@model int <span class="badge"> @Model </span> 中,呈现所需的HTML。

_Layout.cshtml

现在,在您的布局(Html.Action中,使用 @Html.Action("Badge","Warning") 方法调用此呈现此Badge动作方法的输出。

PartialView

确保使用View而不是var scrollHandler myFunction() // calling immediately $(window).resize(myFunction) // calling on resize function myFunction () { var windowsize = $(window).width(); var scrollTop = window.pageYOffset || document.documentElement.scrollTop; var reservasContainer = jQuery(".div_reservas_container"); window.removeEventListener('scroll', scrollHandler); // PC if (windowsize > 1000) { scrollHandler = function () { reservasContainer.toggleClass("div_reservas_container_fixo", scrollTop > 485); }; } // FIM // TABLET if (windowsize > 600 && windowsize < 1000) { scrollHandler = function () { reservasContainer.toggleClass("div_reservas_container_fixo", scrollTop > 355); }; } // FIM // MOBILE if (windowsize < 600) { scrollHandler = function () { reservasContainer.toggleClass("div_reservas_container_fixo", scrollTop > 255); }; // FIM } jQuery(window).scroll(scrollHandler) } 方法返回部分视图(没有自己的布局)。如果您的Badge操作方法返回的视图具有相同的布局文件,则将导致无限循环,并且您将获得StackOverflow异常。