0

我正在开发一个 MVC3 应用程序。在我看来,我有一些逻辑要转移到我的控制器上。它根据模型的某些方面动态显示 ActionLink。Html.ActionLink 的 linkText 和 actionName 参数是唯一不同的东西。我向我的控制器添加了一个方法,该方法将返回一个 JsonResult,其中包含 linkText 和 actionName 的字符串:

[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
    });
}

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

4

3 回答 3

2

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

$('<a>').attr('href', data.buttonAction).text(data.buttonText)
于 2012-09-24T19:18:02.387 回答
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
});
于 2012-09-24T18:56:48.733 回答
1

我想你想要一个 HTML 助手。

    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")
于 2012-09-24T19:12:35.040 回答