我正在研究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
});
}
我可以在哪里调用此方法来使用结果创建链接?
答案 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")