2010-05-07 6 views
0

j'utilisais cette aide HTML personnalisé dans asp.net mvc 1.0 mais maintenant je suis en train de l'utiliser dans un projet 2.0 et il se bloquepersonnalisé Html Helper ne fonctionne pas dans asp.net MVC 2.0

http://blog.pagedesigners.co.nz/archive/2009/07/15/asp.net-mvc-ndash-validation-summary-with-2-forms-amp-1.aspx

C'est l'erreur que je reçois.

System.MissingMethodException was unhandled by user code 
    Message=Method not found: 'System.String System.Web.Mvc.Html.ValidationExtensions.ValidationSummary(System.Web.Mvc.HtmlHelper)'. 
    Source=CustomHtmlHelpers 
    StackTrace: 
     at CustomHtmlHelpers.ActionValidationSummaryHelper.ActionValidationSummary(HtmlHelper html, String action) 
     at ASP.views_signin_signin_aspx.__RenderContent2(HtmlTextWriter __w, Control parameterContainer) in SignIn.aspx:line 23 
     at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) 
     at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) 
     at System.Web.UI.Control.Render(HtmlTextWriter writer) 
     at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) 
     at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) 
     at System.Web.UI.Control.RenderControl(HtmlTextWriter writer) 
     at ASP.views_shared_site_master.__Render__control1(HtmlTextWriter __w, Control parameterContainer) Site.Master:line 64 
     at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) 
     at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) 
     at System.Web.UI.Control.Render(HtmlTextWriter writer) 
     at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) 
     at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) 
     at System.Web.UI.Control.RenderControl(HtmlTextWriter writer) 
     at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) 
     at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) 
     at System.Web.UI.Page.Render(HtmlTextWriter writer) 
     at System.Web.Mvc.ViewPage.Render(HtmlTextWriter writer) 
     at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) 
     at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) 
     at System.Web.UI.Control.RenderControl(HtmlTextWriter writer) 
     at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 
    InnerException: 

Mes autres aides html dans la même bibliothèque fonctionnent. J'ai ajouté l'espace de noms dans le webconfig.

Code I ont

public static class ActionValidationSummaryHelper 
    { 
     public static MvcHtmlString ActionValidationSummary(this HtmlHelper html, string action) 
     { 
      string currentAction = html.ViewContext.RouteData.Values["action"].ToString(); 

      if (currentAction.ToLower() == action.ToLower()) 
      { 
       return html.ValidationSummary(); 
      } 

      return MvcHtmlString.Empty; 
     } 

    } 
+0

Affichage le code source de la méthode peut être utile. –

+0

Eh bien c'est le même code que le lien et maintenant comme la nouvelle suggestion de Charlino. – chobo2

Répondre

1

Sa plainte qu'il ne peut pas trouver une méthode ValidationSummery qui retourne une chaîne ... donc je pense qu'il pourrait être parce que HtmlHelper.ValidationSummary() retourne maintenant une instance de MvcHtmlString et non System.String.

Je ne l'ai pas testé, mais essayez de changer votre méthode d'extension à:

public static MvcHtmlString ActionValidationSummary(this HtmlHelper html, string action) 
{ 
    string currentAction = html.ViewContext.RouteData.Values["action"].ToString(); 

    if (currentAction.ToLower() == action.ToLower()) 
     return html.ValidationSummary(); 

    return MvcHtmlString.Empty; 
} 

Laissez-moi savoir si cela fonctionne ou non :-)

HTHS,
Charles

+0

Hmm non, ça ne marche toujours pas. Je reçois la même erreur. – chobo2

+0

Il donne toujours exactement la même exception? La méthode d'extension est-elle dans votre projet Web ou dans une bibliothèque de classes distincte? – Charlino

+0

Semble être la même exception. C'est dans une bibliothèque de classes séparée. – chobo2

Questions connexes