我有一個名爲fa
的fa
我有一些控制器內的area
,你可以在這裏看到他們中的一個:無法找到資源發生在MVC而控制器存在
namespace UI.Areas.fa.Controllers
{
public class NewsController : Controller
{
//
// GET: /fa/News/
private NewsRepository NewsRepository = new NewsRepository();
private GroupRepository GroupRepository = new GroupRepository();
public ActionResult Index(int? groupId, int? num)
{
ViewBag.slideshowNews = NewsRepository.FindBy(i => i.Group.LanguageType == "Persian" && i.Group.Type == "News" && i.ShowOnSlide == "Yes").OrderByDescending(i => i.Id).Take(6).ToList();
ViewBag.slideshowNewsNav = NewsRepository.FindBy(i => i.Group.LanguageType == "Persian" && i.Group.Type == "News" && i.ShowOnSlide == "Yes").OrderBy(i => i.Id).Take(6).ToList();
ViewBag.threetopnews = NewsRepository.FindBy(i => i.Group.LanguageType == "Persian" && i.Group.Type == "News").OrderByDescending(i => i.Id).Take(3).ToList();
ViewBag.newsSubGroup = GroupRepository.FindBy(i => i.Type == "News" && i.GroupId != null && i.LanguageType == "Persian").OrderByDescending(i => i.Id).Take(6).ToList();
ViewBag.morenewsSubGroup = GroupRepository.FindBy(i => i.Type == "News" && i.GroupId != null && i.LanguageType == "Persian").OrderByDescending(i => i.Id).Skip(6).ToList();
int realnum = 1;
if (num.HasValue) realnum = num.Value;
if (groupId.HasValue)
{
ViewBag.news =
NewsRepository.FindBy(i => i.Group.LanguageType == "Persian" && i.GroupId == groupId).Take(realnum * 8)
.OrderByDescending(i => i.Id)
.ToList();
}
else
{
ViewBag.news =
NewsRepository.FindBy(i => i.Group.LanguageType == "Persian" && i.Group.Type == "News").Take(realnum * 8)
.OrderByDescending(i => i.Id)
.ToList();
}
return View();
}
public ActionResult ShowDetails(int id, int group, int? num)
{
ViewBag.newsDetails = NewsRepository.FindBy(i => i.Id == id).First();
Group objGroup = GroupRepository.FindBy(i => i.Id == group).First();
ViewBag.Groups = GroupRepository.FindBy(i => i.GroupId == objGroup.GroupId && i.LanguageType == "Persian").OrderByDescending(i => i.Id).Take(6).ToList();
ViewBag.moreGroup = GroupRepository.FindBy(i => i.GroupId == objGroup.GroupId && i.LanguageType == "Persian").OrderByDescending(i => i.Id).Skip(6).ToList();
int realnum = 1;
if (num.HasValue) realnum = num.Value;
ViewBag.news =
NewsRepository.FindBy(i => i.Group.LanguageType == "Persian" && i.GroupId == group).Take(realnum * 8)
.OrderByDescending(i => i.Id)
.ToList();
return View();
}
}
}
但是,當我把這個url
http://localhost:17442/fa/News
,這個錯誤發生
The resource cannot be found.
我的全局代碼:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
區登記:
public class faAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "fa";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"fa_default",
"fa/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
}
的routedebugger
結果:
我應該檢查哪些部位?
假設你在'global.asax'的'Application_Start'方法內調用'AreaRegistration.RegisterAllAreas();'是安全的嗎? – cgijbels 2015-02-24 14:30:53
您還需要一個註冊該區域的類,以便它可以通過'AreaRegistration.RegisterAllAreas()'獲取,通常如果您使用VS並添加新區域,則會自動生成「faAreaRegistration」類。你也有這個嗎? – cgijbels 2015-02-24 14:32:44
如果你添加一個操作方法'public ActionResult Test(){return Content(「inside test」); }'並且導航到'http:// localhost:17442/fa/News/Test',你是否收到「內部測試」消息或資源未找到? – cgijbels 2015-02-24 14:39:27