首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVCContrib便携区域无法从HtmlExtensions,MVC 3中运行

MVCContrib便携区域无法从HtmlExtensions,MVC 3中运行
EN

Stack Overflow用户
提问于 2011-04-25 17:52:30
回答 1查看 1.4K关注 0票数 1

我刚刚实现了MVCContrib的便携式区域特性,它工作得很好。我可以使用:http://localhost/projectname/portableAreaName打开它,但是如果我使用如下的HtmlHelper扩展方法呈现它,这个可移植区域就不能工作了:

代码语言:javascript
复制
public static void  RenderHtmlWidget(this HtmlHelper Html)
{
        Html.RenderAction("Index", "HtmlWidget", new {area = "HtmlWidget"});
}

并以这样的方式调用视图中的helper方法:

代码语言:javascript
复制
@using Project.Widgets.HtmlWidget;
@{Html.RenderHtmlWidget();}

我收到了一个错误:没有找到视图'Index‘或它的主目录,或者没有视图引擎支持搜索的位置。在可能的位置列表中没有~/区域/.已定义。但是,我可以使用视图中的相同代码行成功地呈现我的HtmlWidget:

代码语言:javascript
复制
@{Html.RenderAction("Index", "HtmlWidget", new { area = "HtmlWidget" });}

我做错了什么,如何正确使用HtmlHelper扩展和MVCContrib可移植区域特性?

EN

回答 1

Stack Overflow用户

发布于 2011-07-22 20:17:31

有几件事可能是造成这种情况的原因。

  • 在调用/父项目中,使用助手方法调用可移植区域,在/ helper /文件夹中有Web.config文件吗?如果没有,您必须复制在同一项目的/视图/文件夹中找到的Web.config,并将新的副本放置在/ new /文件夹中。
  • 在便携式区域项目中的注册类文件中,在“MapRoute”方法中调用RegisterArea之后,是否调用"RegisterAreaEmbeddedResources();"?
  • 您的便携区域项目中的每个视图是否都是嵌入式资源,而不是内容?在解决方案资源管理器中选择一个视图并点击F4,"Build“应该设置为”“,但它默认为"Content”
  • 您还需要确保可移植项目和消费项目都引用相同版本的MvcContrib,但它们也使用相同版本的ASP.NET MVC。如果在多个项目中引用了您的区域,每个项目都基于不同版本的MVC (不太可能,但可能会根据具体情况而定),则您的区域必须使用消费项目使用的任何MVC版本。
  • 我还建议使用菲尔·哈克的.NET路由调试器 --它是您在消费应用程序中引用的单个DLL文件,并将一行添加到Global.asax.cs中的ApplicationStart()中。这对于确定您的便携区域是否被正确地注册到基本项目中变得非常有帮助-并帮助您切入正轨。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5781315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档