在我的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>
答案 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异常。