У меня проблемы с получением значения для моего базового контроллера. Все, что я хотел бы сделать, это чтобы мой базовый контроллер взял идентификатор из ActionLink?
Ссылка
<%= Html.ActionLink("About Us", "About", new { SectionId = 1 })%>
Базовый контроллер
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace Website.Controllers
{
public class SectionController : Controller
{
//
// GET: /Section/
public SectionController(int SectionId)
{
if (SectionId == 1)
{
ViewData["Message"] = "GOT AN ID";
}
else
{
ViewData["Message"] = "NO ID";
}
}
}
}
Домашний контроллер
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace Website.Controllers
{
[HandleError]
public class HomeController : SectionController
{
public ActionResult Index()
{
return View();
}
public ActionResult About()
{
return View();
}
public ActionResult Contact()
{
return View();
}
}
}
Решение до сих пор
ActionLink
<%= Html.ActionLink("About Us", "About", new { SectionId = 1})%>
SectionAttribute.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace Website.ActionFilters
{
public class SectionAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
// Actions have sectionId parameter
object SectionId = filterContext.ActionParameters.FirstOrDefault(x => x.Key == "SectionId").Value;
if (SectionId != null && (int)SectionId == 1)
{
filterContext.Controller.ViewData["Message"] = "GOT AN ID";
}
else
{
filterContext.Controller.ViewData["Message"] = "NO ID";
}
}
}
}
SectionController
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Website.ActionFilters;
namespace Website.Controllers
{
[Section]
public class SectionController : Controller
{
}
}
View
<%= Html.Encode(ViewData["Message"]) %>