Почему BeginRouteForm записывает имя класса в html? - PullRequest
0 голосов
/ 17 декабря 2010

Я экспериментирую с 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>

1 Ответ

2 голосов
/ 17 декабря 2010

Потому что вы называете это неправильно. <%= означает, более или менее, «обрабатывать результат как строку». Реализация по умолчанию .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)) { %>
    ...
<% } %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...