在MVC3中的视图页面之外使用html.actionlink

时间:2011-10-06 09:56:05

标签: asp.net-mvc-3 actionlink

在我的第一个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提供的。

谢谢,

埃里克

0 个答案:

没有答案