我想创建一个帮手:
@using System.Web.Mvc
@using System.Web.Mvc.Ajax
@using System.Web.Mvc.Html
@using System.Web.Routing
@using Proj.Extenders
@using Proj.Web.Mvc
@using Proj.Web.Mvc.Paging
@using Proj.Mvc.Helpers
@using Proj.Mvc
@helper Create(dynamic ajaxHelper, dynamic htmlHelper,
string text,
string targetID,
string actionName,
string controllerName,
object routeValues,
string active)
{
<li@{ if (active == targetID) { <text> class="active"</text> } }>
@ajaxHelper.ActionLink(htmlHelper.Resource(text).ToString(),
actionName, controllerName, routeValues, updateTargetId: targetID)
</li>
}
问题是我在HtmlHelper<T>
上有扩展方法,其中T
是模型的类型。我想对几个视图使用相同的帮助器,但视图上的@model
会有所不同。
找不到扩展方法:
'System.Web.Mvc.AjaxHelper<X>' does not contain a definition for 'ActionLink'
ActionLink
方法
public static MvcHtmlString ActionLink<T>(this AjaxHelper<T> ajax,
string linkText = " ",
string actionName = null, string controllerName = null,
object routeValues = null, object htmlAttributes = null,
string confirm = null,
string httpMethod = null,
InsertionMode insertionMode = InsertionMode.Replace,
int loadingElementDuration = 0,
string loadingElementId = null,
string onBegin = null,
string onComplete = null,
string onFailure = null,
string onSuccess = null,
string updateTargetId = null,
string url = null)
{
var options = GetAjaxOptions(confirm, httpMethod, insertionMode, loadingElementDuration,
loadingElementId, onBegin, onComplete, onFailure, onSuccess, updateTargetId, url);
return ajax.ActionLink(linkText, actionName, controllerName, routeValues, options, htmlAttributes);
}
该文件位于
- Website
- App_Code
TabHelper.cshtml
如何在帮助文件上使用HtmlHelper<T>
和AjaxHelper<T>
方法?
答案 0 :(得分:1)
内联@helper
不能是通用的。您必须使用定义为扩展方法的标准帮助程序,或者只使用某些编辑器/显示模板或部分视图。在您的特定情况下,我不明白为什么您的自定义ActionLink
必须是通用的。你最后在最后调用ajax.ActionLink
,这不是通用的。