C# 是否将AjaxHelper.ActionLink从服务器传递到模型中的视图?

C# 是否将AjaxHelper.ActionLink从服务器传递到模型中的视图?,c#,asp.net-mvc-3,asp.net-ajax,C#,Asp.net Mvc 3,Asp.net Ajax,在ASP.NET MVC 3中,我希望能够在服务器上创建AjaxHelper.ActionLink的可枚举项,将其添加到模型,并将模型绑定到视图。视图将具有动态数量的ActionLink 当我尝试在我的控制器操作中实例化一个新的AjaxHelper时,它需要像ViewContext和IViewDataContainer这样的东西,所以我有点困惑 理想情况下,我希望有一些工厂来确定如何构造ActionLink,要构造多少,以及返回ViewResult或ActionResult 我已经做了一些挖掘,

在ASP.NET MVC 3中,我希望能够在服务器上创建AjaxHelper.ActionLink的可枚举项,将其添加到模型,并将模型绑定到视图。视图将具有动态数量的ActionLink

当我尝试在我的控制器操作中实例化一个新的AjaxHelper时,它需要像ViewContext和IViewDataContainer这样的东西,所以我有点困惑

理想情况下,我希望有一些工厂来确定如何构造ActionLink,要构造多少,以及返回ViewResult或ActionResult

我已经做了一些挖掘,但似乎找不到这是可能的还是可以接受的模式


希望这是相当清楚的,但我很高兴澄清,如果不是

创建一个名为

AjaxLinkSpatial.cshtml

@Scripts.Render("~/bundles/jquery") @*You need this included, probably in your main layout*@
@Scripts.Render("~/bundles/jqueryval")
<div id ="Target"></div>

@{foreach (var link in Model.LinkItems)
 {
    @Ajax.ActionLink(link.Text, link.Action, link.Controller, null, Model.AjaxOptions, Model.HtmlAttrbs)
 }
}

主要的缺点是,这不是一个干净的分离风格和其他关注点。如果你能用HtmlHelpers干净地重新制作这个,我会非常感兴趣。如果需要,请PM me或评论。

与其在控制器中创建操作链接,为什么不在模型中的数组中保存值,并使用值在视图中循环该数组以创建操作链接?如果这样做,我仍然需要在视图中定义数量的操作链接,然而理想情况下,我希望视图不知道它将得到多少。。。如果模型实际上包含ActionLinks,我希望在可枚举上做一个foreach,然后在页面上点击它们。对不起,Slicksim,我发现我错了-我可以在视图中有一个foreach来构造ActionLinks。
public class AjaxLinks
{
    public List<LinkItem> LinkItems { get; set; }
    public AjaxOptions AjaxOptions { get; set; }
    public Dictionary<string, Object> HtmlAttrbs { get; set; }

    public AjaxLinks(AjaxOptions options, Dictionary<string, Object> htmlAttrbutes)
    {
        LinkItems = new List<LinkItem>();
        this.AjaxOptions = options;
        this.HtmlAttrbs = htmlAttrbutes;
    }
}
public class LinkItem
{
    public string Text { get; set; }
    public string Controller { get; set; }
    public string Action { get; set; }

    public LinkItem(string Text, string Controller, string Action)
    {
        this.Text = Text;
        this.Controller = Controller;
        this.Action = Action;
    }
}
        var htmlAttributes = new Dictionary<string, Object>();
        htmlAttributes.Add("class", "linkstyling class");
        var ajaxOptions = new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "Target", HttpMethod = "POST"};
        var links = new AjaxLinks(ajaxOptions, htmlAttributes);
        links.LinkItems.Add(new LinkItem("About","Home","About"));
 @Html.Partial("AjaxLinksPartial", Model)