MVC 3不会在区域下查找视图
我在MVC 3中使用了多个区域,而且我的查看无法找到问题。 路由似乎正确地接收我的控制器(所有操作都没有任何问题地执行),但是当我返回视图时MVC根本找不到它。
所以,如果我在一个名为’Some’的区域中有一个名为’Thing’的简单控制器,我会执行以下操作…
public ActionResult Index() { return View("Index"); }
操作正确执行,但MVC找不到视图,我会收到类似的消息
未找到“索引”或其主人的视图……它将显示所有搜索到的位置,这将是
〜/ Views / Thing / Index.cshtml~ / Views / Shared / Index.cshtml
等等,但它没有看
〜/一些/浏览/事/ Index.cshtml
关于我做错的任何想法?
好的,抱歉回答我自己的问题,但没有人真的给了我正在寻找的答案。 看来我的问题是自定义路由。
为了重新创建问题,我创建了一个空白的MVC 3项目并添加了一个名为“Some”的区域和一个名为“Thing”的区域中的控制器。 在我创建了一个只返回视图的索引操作的东西上。 然后我将索引视图添加到〜/ Areas / Some / Views / Thing / Index.cshtml
大。 所以,当我点击/ Some / Thing / Index时,它会正确返回视图。
现在去添加一个到Global.asax的路由,如下所示:
routes.MapRoute( "Custom", // Route name "Bob", // URL with parameters new { area = "Some", controller = "Thing", action = "Index" } );
现在,当我导航到/ Bob时,我得到了我提到的错误 – MVC找不到视图。 要解决此问题,我必须在SomeAreaRegistration类中注册此路由,而不是Global.asax。 我也不需要’area’属性,所以它看起来像这样。
context.MapRoute( "Custom", // Route name "Bob", // URL with parameters new { controller = "Thing", action = "Index" } );
如果您的控制器具有与该区域相同的名称 ,则您的控制器将被默认基本路由{controller}/{action}
选中,然后检查区域路由,因此将在根/视图中查找视图而不是区域/意见。 重命名区域或控制器将解决此问题。
尝试在global.asax中添加以下路由:
context.MapRoute( "default", "Some/{controller}/{action}/", new { controller = "Thing", action = "Index"} );
确保在“Some”区域中有一个名为SomeAreaRegistration.cs的文件。 此文件应包含以下内容:
public class SomeAreaRegistration : AreaRegistration { public override string AreaName { get { return "Some"; } } public override void RegisterArea(AreaRegistrationContext context) { context.MapRoute( "Some_default", "Some/{controller}/{action}/{id}", new { action = "Index", id = UrlParameter.Optional } ); } }
使用区域时,将index.cshtml放在〜/ Areas / Some / Views / Thing / Index.cshtml位置
您是否检查(通过设置断点)是否调用了控制器方法?
您列出的搜索视图的页面不在“some”区域中。 你从哪里拨打链接?
如果从其他区域或从root调用链接,则必须在操作链接中设置区域:
@Html.ActionLink("Go To Some/Thing", "Index", "Thing", new {area="Some"}, null)
只是在这里添加另一个解决方案 我也遇到了这个问题但我的问题是由于Global.asax.cs中存在冲突的“全部捕获”路径
删除此路由解决了该问题。
它不会查看* 〜一些/ *视图…..默认情况下(我不知道你怎么能强迫它),约定会是〜/ Views / ……,所以’ d是放置视图的正确位置。如果您希望URL包含“Some”,您可以更改路由以处理该问题。
上述就是C#学习教程:MVC 3不会在区域下查找视图分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1018252.html