ASP.NET MVC: работа с механизмом просмотра ASPX без помощи помощников?
Я ненавижу этих бритвенных помощников. (LabelFor, TextboxFor...) они пытаются мне помочь, но они ничему меня не учат.
Я хочу попробовать с движком ASPX. когда я открываю его, слева появляется даже панель инструментов со всеми старыми добрыми html-командами. почему я не могу использовать это?
почему, когда я пытаюсь создать приложение intellisense, скажем, что runat="server" требуется, когда я знаю, что MVC не нуждается в этом?
Вкратце, как мне написать HTML без помощи помощников? Любой конструктивный совет будет оценен.
Образец:
<%@ Page Language="VB" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
<asp:Content ID="indexTitle" ContentPlaceHolderID="TitleContent" runat="server">Home Page</asp:Content>
<asp:Content ID="indexContent" ContentPlaceHolderID="MainContent" runat="server">
<asp:ListBox runat="server">
<asp:ListItem Text="text1" />
<asp:ListItem Text="text2" />
</asp:ListBox>
</asp:Content>
Ошибка:
`Server Error in '/' Application.
Control 'MainContent_ctl00' of type 'ListBox' must be placed inside a form tag with runat=server.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Web.HttpException: Control 'MainContent_ctl00' of type 'ListBox' must be placed inside a form tag with runat=server.
Source Error:
Line 22: <ul id="menu">
Line 23: <li><%: Html.ActionLink("Home", "Index", "Home")%></li>
Line 24: <li><%: Html.ActionLink("About", "About", "Home")%></li>
Line 25: </ul>
Line 26: </div>`
3 ответа
Вы ненавидите бритвенных помощников, но вам нравится использовать предопределенные элементы из набора инструментов? Элементы в наборе инструментов предназначены для веб-форм, но также могут использоваться для MVC. Это потому, что MVC и веб-формы все еще являются членами семейства asp.net. Тем не менее, я бы не советовал делать это...
Вкратце, как мне написать HTML без помощи помощников?
Как вы пишете простой текст? Просто введите HTML-теги по мере необходимости. Вы можете использовать синтаксис razor/aspx (на самом деле не имеет большого значения, какой из них вы выберете), чтобы циклически проходить по вашим коллекциям и создавать html на основе ваших данных. Ничто не заставляет вас использовать бритвенные помощники или элементы управления веб-формами...
Я думаю, что сейчас самое время узнать немного больше о технологиях, которые вы используете, потому что вы, похоже, не понимаете, что такое базовые вещи...
Я ненавижу этих бритвенных помощников. (LabelFor, TextboxFor...)
ASP.NET MVC - это совершенно другой шаблон и концепция, чем классические веб-формы. Если вам не нравятся эти новые концепции, это, вероятно, означает, что ASP.NET MVC не для вас. Вы всегда можете вернуться к классической разработке WebForms.
Вкратце, как мне написать HTML без помощи помощников?
В ASP.NET MVC нет ничего, что заставляло бы вас использовать помощников. Вы можете прекрасно написать чистый статический HTML в своих представлениях:
<form action="/home/save" action="post">
<label for="first_name">First name</label>
<input type="text" name="first_name" id="first_name" />
<label for="item">Select an item</label>
<select id="item" name="item">
<option value="1">item 1</option>
<option value="2">item 2</option>
<option value="3">item 3</option>
</select>
<button type="sybmit">OK</button>
</form>
Очевидно, теперь вы можете забыть о таких вещах, как автоматическое связывание данных из модели, проверка, маршрутизация,...
Что касается проблемы, с которой вы сталкиваетесь со списком ListBox внутри формы с runat="server", кажется, что вы использовали какой-то классический элемент управления на стороне сервера WebForms в приложении ASP.NET MVC, которое не поддерживается. Server side controls don't work in MVC because they depend on things like ViewState and require you to place them inside forms with runat="server",... things that no longer exist in MVC.
So I would recommend you to go ahead and read some getting started tutorials about MVC here: http://asp.net/mvc
ListBox является элементом SELECT с расширением.Net. В шаблоне бритвы вы можете сделать что-то вроде:
<select id="list1">
@for // some loop condition
{
<option value="@Data.someValue">Text1</option>
}
</select>
... где @Data
привязан к модели, и Text1
также может быть объявлено аналогичным образом.