Альтернатива использованию события OnLoad в ASP.Net MVC View? - PullRequest
2 голосов
/ 19 февраля 2009

Я создаю простое тестовое приложение, чтобы увидеть, как ASP.Net MVC работает с тем, с чем мы имеем дело ежедневно. Мы используем сторонние элементы управления от Developer's Express, и мы будем продолжать их использовать. Если они абсолютно не работают в ASP.Net MVC, то мы не будем использовать ASP.Net MVC.

С учетом сказанного кто-то нашел способ заставить его работать. Он просто должен был поместить некоторый код в код позади. Он должен был переопределить событие OnLoad и просто поместить grid.DataSource = model и grid.DataBind (), и он работает как положено.

В ASP.Net MVC RC код файлов был исключен. Я знаю, что мог бы вернуть их обратно ... Однако, поскольку люди обычно говорят, что код, стоящий за файлами, является злом, как еще вы могли бы сделать это?

Ответы [ 4 ]

13 голосов
/ 20 февраля 2009

Самый простой способ без создания файла codebehind - это добавить его в любое место на странице .aspx:

<script runat="server">
  private void Page_Load(object sender, System.EventArgs e)
  {
     //Initialize your control.
  }
</script>
0 голосов
/ 20 февраля 2009

Вот пример видео и загружаемого примера проекта, показывающего, как использовать элементы управления Developer Express в проекте MVC. Предполагается, что поддержка MVC в Developer Express ожидается в ближайшее время. В настоящее время вам приходится обходить проблемы, связанные с обработкой событий и зависимостью от состояния просмотра. Но недавно я услышал, что они намерены поддерживать MVC.

0 голосов
/ 19 февраля 2009

Любые элементы управления, использующие ViewState, не будут работать в ASP.NET MVC - стандарт System.Web.UI.WebControls.GridView является одним из них, но я не знаю о контроле grid в используемой вами библиотеке. Просто имейте в виду, что любые элементы управления, требующие ViewState, не будут работать должным образом из-за различий между MVC и WebForms.


Пояснение: если функциональность GridView Viewstate и PostBack не используется, она, конечно, будет работать и в ASP.NET MVC View. Однако нет события OnLoad для переопределения, поскольку страница не имеет того же жизненного цикла, поэтому уже предложенное решение, вероятно, является лучшим, если этот элемент управления будет использоваться.

<%
    grid.DataSource = Model;
    grid.DataBind();
%>

Также убедитесь, что у вас есть это в верхней части вашей страницы.

0 голосов
/ 19 февраля 2009

Я (кажется, помню, что я) видел нечто похожее на то, что делаю прямо в представлении (.aspx):

<%
   grid.DataSource = Model;
   grid.DataBind();
%>

Работайте для Telerik Controls, и предлагаемое решение пахнет так, так что, может быть, это будет работать для вас?

...