0

私はそれらのかみそりのヘルパーが嫌いです。(LabelFor、TextboxFor...) 彼らは私を助けようとしますが、何も教えてくれません。

ASPXエンジンでやってみたい。私がそれを開くと、左側にすべての古い良いhtmlコマンドを含むツールボックスさえあります。なぜ私はそれを使用できないのですか?

アプリの intellisense をビルドしようとすると、MVC がそれを必要としないことがわかっているのに、runat="server" が必要であると言うのはなぜですか?

簡単に言えば、ヘルパーを使用せずに 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 と Web フォームがまだ asp.net ファミリーのメンバーであるためです。とはいえ、あまりオススメはしませんが…。

簡単に言えば、ヘルパーを使用せずに HTML を記述するにはどうすればよいですか?

簡単な文章はどう書く?必要に応じて html タグを入力するだけです。razor/aspx (どちらを選択してもかまいません) 構文を使用して、コレクションをループし、データに基づいて html を構築できます。カミソリ ヘルパーや Web フォーム コントロールの使用を強制するものは何もありません...

ここで本当に基本的なことについて混乱しているように見えるので、あなたが使用しているテクノロジーについてもう少し学ぶのに適切な時期かもしれません...

于 2012-08-25T09:22:51.730 に答える
0

私はそれらのかみそりのヘルパーが嫌いです。(LabelFor、TextboxFor...)

ASP.NET MVC は、従来の Web フォームとは非常に異なるパターンと概念です。これらの新しい概念が気に入らない場合は、おそらく 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>

明らかに、モデルからの自動データバインディング、検証、ルーティングなどのことを忘れることができます...

runat="server" を使用したフォーム内の ListBox に関する問題に関する限り、サポートされていない ASP.NET MVC アプリケーションで従来の WebForms サーバー側コントロールを使用しているようです。サーバー側のコントロールは、ViewState などに依存し、runat="server" を使用してフォーム内に配置する必要があるため、MVC では機能しません。MVC には存在しません。

そのため、先に進んで、MVC に関するいくつかの入門チュートリアル ( http://asp.net/mvc ) を読むことをお勧めします。

于 2012-08-25T09:18:20.877 に答える