尝试使用多级导航创建强类型母版页,并希望听到您的意见。
我在这里使用MS推荐的样本: http://www.asp.net/mvc/tutorials/passing-data-to-view-master-pages-vb
所以我有一个ApplicationController获取所有类别,所有其他控制器继承它。它返回一个LIST并将其存储在ViewData [“Nav”]
中母版页作为获取NAV模型并创建菜单的局部视图。 该类别的策略 类别/ {类别ID} / {类别名称} / {页}
问题是当我在partialView中渲染时,如何显示所选的类别或子类别。
我看到一些选择: 1.在applicatin控制器中创建另一个属性:
public class CategoryController : AppliactionController
{
//
// GET: /Category/
public ActionResult Index(string categoryId, string categoryName, int page)
{
base.ActiveCategoryId=int.parse(categoryId);
return View();
}
有什么建议吗?
答案 0 :(得分:0)
如果您要使用主控制器模式,则选项1是合适的解决方案。为了更好地分离,您可以考虑将动作中的逻辑移动到动作过滤器中。
我会完全避免使用选项2,因为您不希望在视图中使用这种逻辑。
您可以尝试的第三个选项是不使用主控制器模式,而是设置视图以在与视图主要关注点正交的内容上调用RenderAction
。在这种情况下,您的视图看起来像Html.RenderAction("Menu", Model.CurrentCategoryId)
答案 1 :(得分:0)
关于你的分析: “你可以考虑将动作中的逻辑移动到动作过滤器中。”
我可以这样做但是可以从动作过滤器访问控制器案例控制器吗?
应该是
public void OnActionExecuting(ActionExecutingContext filterContext)
{
((AppController)filterContext.Controller.base)).ActiveCategoryId=int.parse( filterContext.ActionParameters["CategoryId"])
没有检查代码,只是想听听你的想法,这是你的建议吗?
由于