Как добавить код в качестве asv.net mvc view? - PullRequest
0 голосов
/ 19 февраля 2009

Я испытываю какое-то сумасшествие, которое просто не могу понять ...

я создал следующий класс:

public abstract class AbstractView<T> : ViewPage<T> where T : class

, который дает мне несколько полезных помощников, и я использую его в своих представлениях, как это:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="Project.Web.Mvc.AbstractView<Project.Domain.Entities.Example>" %>

Это все отлично работает. Теперь я должен создать представление, которое требует много сложного кода рендеринга, поэтому я хочу дать своему представлению код позади, чтобы я мог поместить всю эту логику представления в него.

Однако, когда я делаю:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="Project.Web.Views.Examples.View" CodeBehind="~/Views/Examples/View.aspx.cs" %>

public class View : Project.Web.Mvc.AbstractView<Project.Domain.Entities.Example>

Модель всегда равна нулю, когда я отлаживаю представление, что впоследствии дает мне:

"The view 'View' or its master could not be found. The following locations were searched..."

Что происходит?

Andrew

P.S. не говорите мне, что люди с кодовым злом - злые. Я пишу конкретную логику презентации, и многое из этого. В aspx он не встроен.

Ответы [ 3 ]

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

Вы можете попробовать использовать код рядом с. Под этим я подразумеваю класс, производный от AbstractView<T>, который используется только этим одним представлением. Это практически та же концепция, что и программный код. Тогда просто укажите на это вместо использования AbstractView<T>.

Кроме того, ваша Модель не будет подключена до тех пор, пока OnLoad (возможно, раньше, я сам никогда этого не делал), так что это может стать вашей проблемой, если вы пытаетесь использовать ее в конструкторе.

В противном случае вы можете захотеть посмотреть на использование ViewModel, чтобы вместо того, чтобы передавать то, что я предполагаю, являются необработанными объектами домена, вы выполняете пользовательское форматирование в ViewModel и передаете это AbstractView<T>.

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

Хорошо, плохо, модель не готова в коде до загрузки, и я делал что-то в конструкторе.

Странно, что MVC скажет "не могу найти представление", когда он может это сделать, было просто выброшено исключение

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

Использование View в качестве имени класса, вероятно, не очень хорошая идея. Используя что-то более конкретное.

Я так понимаю, вы объявляете класс в пространстве имен, указанном в атрибуте Inherits?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...