Возможно, эти инструкции полезны, они предназначены для переноса сайта с mvc preview 2 в mvc preview 3. Поскольку предварительный просмотр 3 сайтов не затрагивается бета-версией sp1, надеюсь, это поможет:
Обновление существующего приложения Preview2 до Preview 3
Информация в этом разделе описывает изменения, которые вы должны внести, чтобы изменить приложение ASP.NET MVC, созданное с выпуском Preview 2, чтобы оно работало с выпуском Preview 3.
Изменения кода
Обновите ссылки на следующие сборки, чтобы они указывали на новые версии Preview 3 сборок:
System.Web.Abstractions
System.Web.Routing
System.Web.Mvc
По умолчанию эти сборки находятся в следующей папке:
%ProgramFiles%\Microsoft ASP.NET\ASP.NET MVC Preview 3
Для всех существующих методов действия измените тип возвращаемого значения с void на ActionResult.
Везде, где вы вызываете RenderView, измените его на вызов, чтобы вернуть View. Вы можете найти RenderView(
и заменить его на return View(
.
Везде, где вы звоните RedirectToAction
, перед вызовом введите ключевое слово return. Найдите RedirectToAction(
и замените его return RedirectToAction(
.
Если вы используете строго типизированную страницу, замените <%= ViewData.PropertyName %>
на <%= ViewData.Model.PropertyName %>
. Вместо того, чтобы заменять объект ViewData вашим строго типизированным объектом, инфраструктура MVC теперь устанавливает свойство Model для предоставленного вами экземпляра.
В файле Global.asax удалите определение маршрута для Default.aspx. В шаблоне Preview 2 по умолчанию маршрут выглядел следующим образом:
routes.Add(new Route("Default.aspx", new MvcRouteHandler())
{
Defaults = new RouteValueDictionary(new { controller = "Home", action = "Index", id = "" }),
});
В файле Global.asax найдите следующий маршрут MVC по умолчанию:
routes.Add(new Route("{controller}/{action}/{id}", new MvcRouteHandler())
{
Defaults = new RouteValueDictionary(new { action = "Index", id = "" }),
});
Замените его следующим маршрутом:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
Добавьте следующую строку в самом начале метода RegisterRoutes:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
Отредактируйте файл Default.aspx и добавьте следующую строку:
<% Response.Redirect("~/Home") %>
Это перенаправление не требуется для IIS 7. Это обходной путь для проблемы с работой веб-сервера, встроенного в Visual Studio (сервер разработки ASP.NET), с маршрутизацией.
Изменения конфигурации
В файле Web.config вы должны изменить атрибут type записи httpHandler в разделе UrlRoutingHandler на System.Web.HttpForbiddenHandler.
Для этого найдите в файле следующую строку:
path="UrlRouting.axd" type="System.Web.Routing.UrlRoutingHandler, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
Заменить его следующей строкой:
path="UrlRouting.axd" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
Поскольку номера версий сборок System.Web.Abstractions и System.Web.Routing были изменены на 0.0.0.0, необходимо обновить информацию о версии в файле Web.config. В файле Web.config найдите следующую строку:
System.Web.Routing, Version=3.5.0.0
Заменить его следующей строкой:
System.Web.Routing, Version=0.0.0.0
Поиск следующей строки:
System.Web.Abstractions, Version=3.5.0.0
Заменить его следующей строкой:
System.Web.Abstractions, Version=0.0.0.0