2015-02-09 2 views
1

Теперь я использовать для переопределения расширения, например:Как я могу переопределить Url.Action

public abstract class MyWebViewPage<T> : WebViewPage<T> 
{ 
    public new MyHtmlHelper<T> Html { get; set; } 
    public override void InitHelpers() 
    { 
     Ajax = new AjaxHelper<T>(ViewContext, this); 
     Url = new UrlHelper(ViewContext.RequestContext); 
     Html = new MyHtmlHelper<T>(ViewContext, this); 
    } 
} 

public class MyHtmlHelper<T> : HtmlHelper<T> 
{ 
    public MyHtmlHelper(ViewContext viewContext, IViewDataContainer viewDataContainer) : 
     base(viewContext, viewDataContainer) 
    { 
    } 

    public MvcHtmlString ActionLink(string linkText, string actionName) 
    { 
     return ActionLink(linkText, actionName, null, new RouteValueDictionary(), new RouteValueDictionary()); 
    } 
} 

Как добавить Url.Action помощника здесь со всей перегруженной версией?

UPD: я должен переопределить все стандартный метод, потому что многие народы работают над этим и я, они должны использовать стандартные хелперы, но с моей функциональностью

ответ

8

Вам не нужно переопределить ни Url.Action помощника, ни HtmlHelper действия , Вместо этого вы можете создать Extension Methods. Вот пример:

public static class MyHelpers 
{ 
    public static string MyAction(this UrlHelper url, string actionName) 
    { 
     // return whatever you want (here's an example)... 
     return url.Action(actionName, new RouteValueDictionary()); 
    } 
} 

Затем, вы можете использовать метод в своих взглядах, как это:

@Url.MyAction("MyActionName") 

UPDATE:

Я бы не рекомендовал переопределение метода Url.Action. Создание методов расширения намного проще и чище. Но, вот как вы можете это сделать:

public class MyUrlHelper : UrlHelper 
{ 
    public override string Action(string actionName) 
    { 
     return base.Action(actionName, new RouteValueDictionary()); 
    } 
} 
+0

я должен переопределить все стандартный метод, потому что многие народы работают над этим и я, они должны использовать стандартные хелперы, но с моей функциональности – AleksP

+1

, что это не очень хорошая идея. Тот факт, что многие люди используют методы, не является веской причиной. Но, в любом случае, проверьте мой обновленный ответ. – ataravati

Смежные вопросы