Включить представления MVC 3 в приложение веб-форм - PullRequest
3 голосов
/ 15 декабря 2010

Я разрабатываю одну новую область довольно большого веб-приложения с использованием MVC3 и Razor, где остальная часть приложения основана на ASP.NET 4 Web Forms. Могу ли я включить свои компоненты MVC в это приложение, и что мне нужно для этого сделать?

Ответы [ 3 ]

4 голосов
/ 15 декабря 2010

Наш опыт показывает, что WebForms и MVC хорошо работают бок о бок в одном приложении, но не смешаны. Другими словами, каждая страница может быть WebForms или MVC, но она не может легко включать элементы обоих. Два основных обходных пути, которые я нашел:

  • Сделайте все ваши элементы MVC сильно AJAXified, чтобы они могли загружаться динамически через AJAX после загрузки страницы.
  • Имейте две версии ваших главных страниц и все остальное, "общее" для вашего веб-приложения, чтобы части MVC вашего приложения выглядели так же, как части WebForms.

Мы используем последний подход.

3 голосов
/ 15 декабря 2010

http://www.packtpub.com/article/mixing-asp.net-webforms-and-asp.net-mvc

Это должно вывести вас на правильный путь.Хотя если бы это был я лично, я бы добавил в ваш проект новый проект MVC, тогда вы можете просто настроить виртуальный каталог в IIS / MVCApp

0 голосов
/ 19 октября 2011

Я использую класс, подобный этому, чтобы встроить представление MVC в страницу веб-форм.Постараюсь сделать это в обратном направлении

public class HelperFactory
{
    private class FakeController : Controller
    {
    }

    private class FakeView : IView
    {
        public void Render( ViewContext viewContext, TextWriter writer )
        {
            throw new NotImplementedException();
        }
    }

    public static HtmlHelper<TModel> GetHelper<TModel>()
    {
        //HttpContextBase context = new HttpContext( HttpContext.Current );
        FakeController controllerBase = new FakeController();
        RouteData rd = new RouteData();
        rd.Values.Add( "controller", "Fake" );
        RequestContext requestContext = new RequestContext( new HttpContextWrapper( HttpContext.Current ), rd );
        ControllerContext fakeContext = new ControllerContext( requestContext, controllerBase );
        ViewDataDictionary vdd = new ViewDataDictionary();
        ViewContext viewCtx = new ViewContext( fakeContext, new FakeView(), vdd, new TempDataDictionary(), requestContext.HttpContext.Response.Output );

        return new HtmlHelper<TModel>( viewCtx, new ViewPage() );
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...