我正在尝试ASP.NET MVC 2,我有一个使用Html.BeginRouteForm
的简单表单,它是工作文件,除了它将字符串System.Web.Mvc.Html.MvcForm
写入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>
答案 0 :(得分: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)) { %>
...
<% } %>