#asp.net-mvc #asp.net-mvc-3 #asp.net-mvc-routing
#asp.net-mvc #asp.net-mvc-3 #asp.net-mvc-routing
Вопрос:
Я создал новый проект MVC 3. Я запустил проект, и он загрузил домашнюю страницу. Затем я добавил новое представление под названием «discussion.cshtml».
У меня есть 1 контроллер в папке Controllers: HomeController
РЕДАКТИРОВАТЬ Я неправильно написал «Обсуждение» ранее, но в моем проекте оно не написано с ошибкой. проблема сохраняется.
новое представление настраивается следующим образом: View -> Home -> Discussion.cshtml
Я добавил этот код в HomeController
public ActionResult Discussion()
{
return View();
}
Проблема: представление не загрузилось, когда я нажал выполнить. Я получил ошибку 404. Страница индекса загружается с этим URL «localhost: 5553». Но я пытался "localhost:5553/discussion.cshtml"
, и он не может его найти. Как мне сопоставить / направить к представлению. Я не уверен, что происходит, мне кажется, я упускаю что-то простое.
Страница Global.ascx содержит обычный код по умолчанию, если это поможет:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
namespace MvcApplication1
{
// Note: For instructions on enabling IIS6 or IIS7 classic mode,
// visit http://go.microsoft.com/?LinkId=9394801
public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
}
}
Комментарии:
1. используйте это, и это будет работать нормально:- localhost: 5553/Обсуждение
Ответ №1:
вы не можете сделать что-то вроде localhost:5553/discussion.cshtml» на mvc.
щелкните правой кнопкой мыши по действию обсуждения и выберите Добавить представление.
если вы просмотрите localhost:5553/Home/Discussion
, это приведет к представлению, которое вы добавили выше.
Комментарии:
1. Оказывается, все было правильно, но я добавлял .cshtml. Сначала это не сработало, когда я его удалил, но я закрыл Visual Studio и очистил свой кэш, и это сработало.
Ответ №2:
Похоже, у вас опечатка. Попробуйте переименовать Discsussion.cshtml
в Discussion.cshtml
И попробуйте получить к нему доступhttp://localhost:5553/home/discussion
Комментарии:
1. Опечатка была только в сообщении, а не в проекте. Это не сработало.
2. Можете ли вы показать более подробную информацию о проекте? Как насчет доступа к индексному представлению? Вы можете это просмотреть? Используя какой URL?
3. И когда вы попробовали ‘ localhost: 5553 / home / discussion ‘, вы собирали или отлаживали (нажав f5)?
Ответ №3:
С помощью действия, которое просто возвращает View():
public ActionResult Discussion()
{
return View();
}
The ASP.NET Механизм MVC будет искать файл с тем же именем, что и действие, в папке с тем же именем, что и контроллер. В вашем случае имя файла пишется по-другому. Вы также могли бы сделать:
public ActionResult Discussion()
{
return View("Discsussion");
}
Это будет соответствовать вашему текущему имени файла, но, похоже, это опечатка, поэтому просто переименуйте ваш файл.
Комментарии:
1. Опечатка была только в сообщении, а не в проекте. Это не сработало.