我知道这可能是一个古老的问题,但与我在一起,因为这与网络中解释的其他人不同。我在bootstrap中有一些选项卡,根据被击中的动作,它必须被设置为主动。我也有一些子选项卡,根据被击中的动作,它也必须设置为主动。在ASP.NET MVC中设置一个启动选项卡活动
这里是它的外观像一个形象:
因此,当一个子标签正在积极父标签必须是活跃。
所以我想,我节省了PAGEID每个动作,并根据视图上的PAGEID我可以将其设置为创建一个新的属性活跃与否:
这里是属性:
public class YcoPageId : Attribute
{
public YcoPageId(int pageId)
{
PageId = pageId;
}
public int PageId { get; }
}
这里是动作:
[YcoPageId(1)]
public ActionResult Admin()
{
return View();
}
对于视图,我想创建一个扩展方法来查看选项卡和子选项卡是否处于活动状态!
这里是我的代码:
public static bool IsActive(this HtmlHelper htmlHelper, params int[] ids)
{
var viewContext = htmlHelper.ViewContext;
var action = viewContext....
//How to get the YcoPageId attribute from here and see the Id
//Here i will test if ids contain id but dont know how to get it...
}
,如果你认为添加的每一页的ID是坏主意,我觉得对于我来说,我会用这个ID为其他目的,因为它会像标识符一个具体的行动...
所以我的问题是我怎么能得到属性YcoPageId
当前行动在我的扩展方法?
的观点看起来就像这样:
<li class="@(Html.IsActive(1, 4, 5... etc)? "active" : "")">
<a href="@url">
<div class="row text-center">
<div class="col-md-12">
<i class="fa @fontAwesomeIcon fa-4x" aria-hidden="true"></i>
<br/>@menuName
</div>
</div>
</a>
</li>
如果有什么更好的想法如何解决这个问题,请继续!
在此先感谢!
这些标签的关系是什么?顶部选项卡是否与控制器相关,并且子选项卡与所选控制器中的操作方法相关? –
不,他们没有任何关系,因为我正在将一些ASP.NET Webforms代码迁移到ASP.MVC中,所以我可以创建任何类型的关系,对我来说它的工作很重要:) –
@StephenMuecke但是现在我正在思考为父控制器设置一个控制器是有意义的,但这会让我测试操作名称的子选项卡,同时仅为控制器名称选择父控制器,这就是你想要解释的东西吗? –