Альтернативы серверным элементам управления в MVC - PullRequest
0 голосов
/ 08 апреля 2009

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

<cc1:MyControl Header="Some Header" Content="Some Content" />

, что будет означать, что экземпляр класса MyControl будет создан и, возможно, визуализирован в

<h1>Some Header</h1>
<p>Content</p>

Я не хочу никакого состояния представления или постбэка, только модульность. Я также хочу, чтобы эти модули содержались в отдельной библиотеке классов, поэтому ViewUserControls не подойдет для меня. Использование серверных элементов управления обычным способом работает, но оно генерирует тег формы и поле viewstate, чего я не хочу, если могу избежать этого.

Я видел этот вопрос и этот о том, как использовать серверные элементы управления в ASP.NET MVC, но они не дают достаточного ответа.

Редактировать: Я нашел ответ. Когда я добавил пользовательский элемент управления с помощью дизайнера, он автоматически создал , который я пропустил. Если я просто удаляю этот тег, все работает отлично.

Ответы [ 3 ]

2 голосов
/ 08 апреля 2009

Вы все еще можете использовать все элементы управления в ASP.NET MVC, если они не требуют рендеринга в форме сервера.

ascx файлы и @Register директивы все еще работают довольно хорошо. Отличным нововведением является метод Html.RenderPartial, который позволяет передавать объект модели в частичное представление (ascx) и отображать его соответствующим образом.

0 голосов
/ 12 апреля 2009

Кроме элементов управления, которые все еще работают с ASP.Net MVC, вы можете использовать mvc элементы управления.

ОБНОВЛЕНИЕ : Этот ответ был для ASP.Net MVC 1.0 в 2009 году. На данный момент он устарел и не имеет значения.

0 голосов
/ 08 апреля 2009

Просто добавив еще одну возможность к Mehrdad ответу, вы можете использовать методы расширения , чтобы сделать простой элемент управления, подобный этому:

<%= html.MyControl( "Some header", "Some content" ) %>


<Extension()> _
Public Function MyControl(ByVal htmlHelper As HtmlHelper, _
                         ByVal Header As String, _
                         ByVal Content As String) As String

Dim sb As New StringBuilder()
sb.AppendFormat("<h1>{0}</h1>", Header)
sb.AppendFormat("<p>{0}</p>", Content)
Return sb.ToString()
End Function

Или вы можете сделать более сложный элемент управления, как в этом примере: Создать метод помощника ASP.NET MVC GridView

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