Я унаследовал сломанное приложение MVC от программиста, который покинул компанию, прежде чем я присоединился. Предыдущий программист в своем последнем действии здесь реорганизовал приложение в Районы (как показано в прикрепленном снимке Solution Explorer). Я вытягиваю свои волосы из-за того, что я уверен, это просто, но поскольку я новичок в MVC, на данный момент это огромная вещь:MVC области и ошибка «404 ресурс не найден»
Многие из ссылок, созданных разметкой @Html. ActionLink() работают исправно, но некоторые из них не работают с «404 ресурсом не может быть найден [...]».
Вот пример ссылки, который не:
@Html.ActionLink("Upload Documents", "BlankPageTest", new { controller = "DocumentUpload", area = "Documents" }, new { @class = "btn btn-info" })
... и вот ссылка, которая работает:
@Html.ActionLink("Edit Questions", "ChangeQuestions", new { controller = "Account", area = "UserAccount" }, new { @class = "btn btn-info" })
Оба эти ссылки в разметке для View «MyAccount.cshtml», который живет в области «UserAccount». Единственное функциональное различие, которое я вижу между отсутствующей ссылкой и тем, что работает, - это ресурс рабочей ссылки (ChangeQuestions.cshtml), ЖИВЫЙ В ОДНОЙ ЗОНЕ, как представление (MyAccount.cshtml). Однако, поскольку и контроллер, и область являются параметрами для Html.ActionLink(), я не вижу, как MVC будет путать.
Полный URL приведен в «404 ресурса не найден» сообщение:
/CROMERR.Website/Documents/DocumentUpload/BlankPageTest
У меня есть метод в контроллере для целевого URL под названием «DocumentUpload» ... не может найти более очевидные вещи чтобы попытаться так подумать, я бы спросил кого-то более осведомленного. Любая помощь приветствуется.
DocumentAreaRegistration
содержит код:
public override string AreaName
{
get
{
return "Documents";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Documents_default",
"Documents/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional });
}
Что находится в 'DocumentsAreaRegistration' и называется ли он формой? – DavidG
DavidG, DocumentAreaRegistration содержит код ниже. Метод RegisterArea() имеет нулевые ссылки в соответствии с Visual Studio. public override string AreaName { { { возвращение "Документы"; } } public override void RegisterArea (AreaRegistrationContext context) { Контекст.MapRoute ( «Documents_default», «Документы/{Контроллер}/{действие}/{id}", новый {action = "Index", id = UrlParameter.Optional} ); } – markaaronky
Yikes. Нет возможности форматировать код в ответах DavidG. Приношу свои извинения за спагетти. В указанном вами файле есть один метод, но он нигде не вызывается ... – markaaronky