在我的第一个MVC项目中挣扎,我需要显示一个向导菜单。问题是某些步骤取决于用户提供的数据。 例如,假设用户付现金,我们会跳过显示银行帐户信息的页面(从而删除菜单项)..
我在C#中有一个“页面”类,以及一个包含“页面”列表的“菜单”类。我将编写指示是否在菜单类中显示菜单项的逻辑。
问题在于此; 页面类是一个非常简单的类,看起来像这样(“活动”表示菜单项突出显示为当前活动项目):
public class Page
{
MvcHtmlString Link { get; set; }
bool Active { get; set; }
bool Visible { get; set; }
public Page(MvcHtmlString link)
{
Link = link;
Active = false;
Visible = true;
}
public Page(MvcHtmlString link, bool active, bool visible)
{
Link = link;
Active = active;
Visible = visible;
}
}
在我的逻辑中,我想将页面添加到列表中,并且我想使用页面的“链接”属性来存储每个菜单项的目标URL。这样我就可以使用Html.Actionlink()及其所有可用参数来填充该属性,以生成链接的HTML。 在最终菜单中,我可以迭代并显示项目。 它还有一个优点,我可以对这个函数进行AJAX调用并接收HTML,我可以在我的页面中使用它来动态更新菜单。
然而,Html.ActionLink不可用,而在Stackoverflow的其他帖子中,我发现人们也不喜欢在MVC视图之外使用html帮助,原因可以理解。
所以我的问题是;我将如何在一个干净的解决方案中解决这个问题?我考虑过给页面类不是一个Link属性,而是“控制器”和“动作”属性,但是我会错过很容易添加类或其他HTML属性的灵活性,这是actionlink提供的。
谢谢,
埃里克