【问题标题】:Custom Html Helper is not working in asp.net MVC 2.0自定义 Html 助手在 asp.net MVC 2.0 中不起作用
【发布时间】:2010-05-07 21:08:44
【问题描述】:

我在 asp.net mvc 1.0 中使用了这个自定义 html 帮助程序,但现在我尝试在 2.0 项目中使用它并且它崩溃了

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

这是我得到的错误。

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: 

我在同一个库中的其他 html 助手确实可以工作。我将命名空间添加到 webconfig 中。

我拥有的代码

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

    }

【问题讨论】:

  • 发布该方法的源代码可能会有所帮助。
  • 嗯,它与链接的代码相同,现在是 Charlino 的新建议。

标签: c# .net asp.net-mvc-2 html-helper


【解决方案1】:

它抱怨它找不到返回字符串的 ValidationSummery 方法......所以我认为这可能是因为 HtmlHelper.ValidationSummary() 现在返回 MvcHtmlString 的实例而不是 System.String

我没有对此进行测试,但请尝试将您的扩展方法更改为:

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

让我知道这是否有效:-)

HTH,
查尔斯

【讨论】:

  • 嗯,不,它似乎仍然无法正常工作。我遇到了同样的错误。
  • 它仍然给出完全相同的异常?你的 web 项目中的扩展方法还是单独的类库?
  • 似乎是同一个例外。它在一个单独的类库中。
  • 冒着告诉你如何吸鸡蛋的风险......两个项目是否引用相同的 asp.net mvc dll?
  • 你的意思是他们使用的是同一个版本?因为起初他们没有,但如果你尝试使用 MvcHtmlString 并且你引用 asp.net mvc 1.0 dll 它不会让你编译,因为它似乎在 mvc 1.0 中不存在。所以我确实将库更改为使用 2.0。它在你的电脑上工作吗?如果是这样,您可以通过电子邮件将解决方案发送给我吗?
猜你喜欢
  • 1970-01-01
  • 2014-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-08
  • 2011-05-12
相关资源
最近更新 更多