2010-12-17 22 views
0

我正在嘗試使用ASP.NET MVC 2,並且使用Html.BeginRouteForm這個簡單的表單,它是工作文件,除了它將字符串System.Web.Mvc.Html.MvcForm寫入html。爲什麼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)) { %> 
    ... 
<% } %> 
相關問題