0

我讨厌那些剃须刀帮手。(LabelFor,TextboxFor ...)他们试图帮助我,但他们什么也没教我。

我想尝试使用 ASPX 引擎。当我打开它时,左侧甚至还有工具箱,里面有所有旧的好 html 命令。为什么我不能使用它?

当我知道 MVC 不需要它时,为什么当我尝试构建应用程序智能感知时说 runat="server" 是必需的?

简而言之,如何使用 helpers 编写不带 HTML 的 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>`
4

3 回答 3

1

您讨厌剃须刀助手,但喜欢使用工具箱中的预定义元素?工具箱中的项目适用于 Web 表单,但也可用于 MVC。这是因为 MVC 和 webforms 仍然是 asp.net 家族的成员。但是,我真的不建议这样做...

简而言之,如何使用 helpers 编写不带 HTML 的 HTML?

你如何写一个简单的文本?只需根据需要键入 html 标签。您可以使用 razor/aspx(您选择哪一种并不重要)语法来循环您的集合并根据您的数据构造 html。没有什么会强迫您使用剃刀助手或网络表单控件...

我认为现在可能是了解更多有关您正在使用的技术的正确时间,因为您似乎对这里真正基本的东西感到困惑......

于 2012-08-25T09:22:51.730 回答
0

ListBox 是一个 .Net 化的 SELECT 元素。在剃刀模板中,您可能可以执行以下操作:

<select id="list1">
  @for // some loop condition
  {
    <option value="@Data.someValue">Text1</option>
  }
</select>

... where@Data绑定到模型,Text1也可以类似地声明。

于 2013-04-16T22:56:39.900 回答
0

我讨厌那些剃须刀帮手。(LabelFor, TextboxFor...)

ASP.NET MVC 是一种与经典 WebForms 截然不同的模式和概念。如果您不喜欢这些新概念,这可能意味着 ASP.NET MVC 不适合您。您总是可以回到经典的 WebForms 开发。

简而言之,如何使用 helpers 编写不带 HTML 的 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>

显然,现在您可以忘记模型中的自动数据绑定、验证、路由等事情......

就您在带有 runat="server" 的表单中的 ListBox 所遇到的问题而言,您似乎在不受支持的 ASP.NET MVC 应用程序中使用了一些经典的 WebForms 服务器端控件。服务器端控件在 MVC 中不起作用,因为它们依赖于 ViewState 之类的东西,并且需要您将它们放在带有 runat="server", ... 的表单中,这些东西在 MVC 中不再存在。

所以我建议你继续阅读一些关于 MVC 的入门教程:http: //asp.net/mvc

于 2012-08-25T09:18:20.877 回答