2010-12-17 2 views
0

私はASP.NET MVC 2を試していますが、System.Web.Mvc.Html.MvcFormという文字列をHTMLに書き出す点を除いて、作業ファイルであるHtml.BeginRouteFormを使用した単純なフォームがあります。なぜBeginRouteFormはhtmlにクラス名を書きますか?

なぜこれが行われ、どのように停止させることができますか?


<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<SelectList>" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> 
    Index 
</asp:Content> 

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 

    <h2>Index</h2> 

    <%=Html.BeginRouteForm(String.Empty, new {Action = "Search"}, FormMethod.Get) %> 


    <%:Html.DropDownList("worklist", this.Model)%> 

    <br /> 

    <input type="submit" /> 

    <% Html.EndForm(); %> 
</asp:Content> 

<h2>Index</h2> 

<form action="/Site/Search" method="get">System.Web.Mvc.Html.MvcForm 


<select Label="Worklists" id="worklist" name="worklist"><!-- Options --> 
</select> 

<br /> 

<input type="submit" /> 

</form> 

答えて

2

あなたは間違ってそれを呼んでいるので。 <%=は多かれ少なかれ "結果を文字列として扱う"という意味です。 .ToString()のデフォルトの実装では、クラス名が記述されます。 <%を使用すると問題を解決できます。しかし、より良い方法は、usingと併用することです。これはMVCにとってもっと慣れて、EndFormを明示的に呼び出す必要性を軽減します。言い換えれば、あなたのコードを変更:

<%=Html.BeginRouteForm(String.Empty, new {Action = "Search"}, FormMethod.Get) %> 
    ... 
<% Html.EndForm(); %> 

...へ:

<% using (Html.BeginRouteForm(String.Empty, new {Action = "Search"}, FormMethod.Get)) { %> 
    ... 
<% } %> 
関連する問題