JsonResult的动态ActionLink?

时间:2012-09-24 18:51:45

标签: c# javascript jquery json asp.net-mvc-3

我正在研究MVC3应用程序。在我看来,我有一些逻辑,我想转移到我的控制器。它根据模型的某些方面动态显示ActionLink。链接文本和Html.ActionLink的actionName参数是唯一可以有所不同的东西。我向我的控制器添加了一个方法,该方法将返回带有linkText和actionName的字符串的JsonResult:

[AcceptVerbs(HttpVerbs.Get)]
public JsonResult GetActionButton(int id)
{
    string action = null;
    string text = null;

    // Snipped stuff that sets action and text

    return Json(new
    {
        buttonAction = action,
        buttonText = text
    });
}

我可以在哪里调用此方法来使用结果创建链接?

3 个答案:

答案 0 :(得分:2)

要从控制器生成链接,请查看UrlHelper Methods,最好使用Action来接收普通网址。在带有jquery的客户端上,您可以创建如下链接:

$('<a>').attr('href', data.buttonAction).text(data.buttonText)

答案 1 :(得分:1)

多个ID的来源在哪里,我在视图模型中猜测?

也许在文档就绪时使用jQuery / AJAX:

$(document).ready(function() {
  // Handler for .ready() called.
  // AJAX call to GetActionButton for each enumeration over the ID's in the view model
});

答案 2 :(得分:1)

我认为你想要一个HTML Helper。

    public static MvcHtmlString MyActionLink(this HtmlHelper htmlHelper, string linkText, string actionName, string controllerName)
    {
        string actionLinkHtml = string.Format("<a href=\"/{0}/{1}\">{2}</a>", controllerName, actionName, linkText);
        return new MvcHtmlString(actionLinkHtml);
    }

当然会有更多代码来设置你的变量,你的参数可能只是你上面的int ID,但这是基本的想法。

然后在视图中使用:

    @Html.MyActionLink("link text", "action", "ctrlr")