маршрутизация веб-формы в asp.net MVC - PullRequest
0 голосов
/ 07 августа 2010

У меня есть приложение ASP.NET MVC, и у меня есть страница WebForm, которую я построил в MVC из-за учебника о том, как сделать то, что мне нужно, но все это было в стиле WebForm. Я пытался понять, как сделать то же самое в формате MVC, но не могу понять. Поэтому мне нужно было выяснить, как использовать эту страницу в моем приложении MVC. Но когда я пытаюсь перейти на страницу, появляется сообщение об ошибке «Страница не может быть получена из ViewMasterPage, если страница не является производной от ViewPage». Так что мне пришлось сделать новый стандартный MasterPage.

Ситуация такая. У меня есть панель поиска, расположенная в MVC ViewMasterPage, которая находится на каждой странице, которая получена из него. Как только пользователь отправляет информацию в строке поиска, он вызывает страницу WebForm Search.aspx и отображает результаты на странице Search.aspx. Я хочу, чтобы URL был похож на "http: /// search //. Страница Search.aspx находится в корне проекта. Как бы я получил результаты, которые я ищу? Спасибо!

Ответы [ 2 ]

3 голосов
/ 07 августа 2010

Возможно, вы захотите повторно реализовать эту веб-форму в надлежащем MVC. Они могут хорошо играть вместе в одном и том же веб-приложении, если вы знаете, что делаете, но если вы пытаетесь реализовать все это в MVC, то, вероятно, просто придерживаться учебника по веб-формам для случайной страницы все это гораздо сложнее поддерживать. (Как вы уже научились делать вторую главную страницу.)

Изучите учебные пособия, но не забудьте просто скопировать / вставить код, чтобы узнать, что именно они делают, а не копировать / вставлять код. Реальная реализация на вашем конце звучит так, как будто она должна остаться в MVC.

1 голос
/ 26 февраля 2013

ASP.NET WebForms может абсолютно обработать маршрутизацию.Недавно я создал очень большой сайт, полностью веб-формы и полностью перенаправленный.Нет общедоступных указаний на то, что это aspx-сайт, отличный от Viewstate и другой контрольной формы мусора.

<system.webServer>
  <rewrite>
    <rules>
      <!-- If a user requests the search.aspx page, redirect them to /search -->
      <rule name="Search-Redirect" stopProcessing="true">
        <match url="^search\.aspx$" />
        <conditions>
          <add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" />
        </conditions>
        <action type="Redirect" url="search" appendQueryString="true" />
      </rule>
      <!-- If a user requests the search page with a query appended to the URL, send them to the search.aspx page and put the training URL into the q query string -->
      <rule name="Search-Query-Rewrite" stopProcessing="true">
        <match url="^search/([_0-9a-z-]+)" />
        <action type="Rewrite" url="search.aspx?q={R:1}" appendQueryString="false" />
      </rule>
      <!-- If a user requests the search page without a query appended, just send them to the search.aspx page -->
      <rule name="Search-Rewrite" stopProcessing="true">
        <match url="^search$" />
        <action type="Rewrite" url="search.aspx" />
      </rule>
    </rules>
  </rewrite>
</system.webServer>

Возможно, вам придется немного подкорректировать это в зависимости от структуры URL, как вы собираетеськритерии поиска, чтобы зайти на страницу, но это будет работать.

...