Ошибка файла ascx в MVC - PullRequest
       17

Ошибка файла ascx в MVC

0 голосов
/ 25 октября 2010

Я пытаюсь визуализировать частичное представление ascx в другом представлении.

Однако в моем файле ascx есть следующая ошибка, и после некоторых исследований я все еще в неведении!:

Определение типа или пространства имен или конец файлаожидается expectedend-of-file

Вот код в DinnerForm.ascx

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<NerdDinner.Models.Dinner>" %>

<%: Html.ValidationSummary("Please Corrent the Errors and Try Again.") %>

        <fieldset>
            <legend>Fields</legend>

<table border="0">
          <tr>
            <td><%: Html.LabelFor(m => m.Title) %></td>
            <td><%: Html.TextBoxFor(m => m.Title) %></td>
            <td><%: Html.ValidationMessageFor(m => m.Title, "*") %></td>
          </tr>
          <tr>
            <td><%: Html.LabelFor(m => m.EventDate) %></td>
            <td><%: Html.TextBoxFor(m => m.EventDate) %></td>
            <td><%: Html.ValidationMessageFor(m => m.EventDate, "*") %></td>
          </tr>
          <tr>
            <td><%: Html.LabelFor(m => m.Description) %></td>
            <td><%: Html.TextAreaFor(m => m.Description) %></td>
            <td><%: Html.ValidationMessageFor(m => m.Description, "*") %></td>
          </tr>
          <tr>
            <td><%: Html.LabelFor(m => m.Address) %></td>
            <td><%: Html.TextBoxFor(m => m.Address) %></td>
            <td><%: Html.ValidationMessageFor(m => m.Address, "*") %></td>
          </tr>
          <tr>
            <td><%: Html.LabelFor(m => m.Country) %></td>
            <td><%: Html.DropDownListFor(m => m.Country, ViewData["countries"] as SelectList)%></td>
            <td><%: Html.ValidationMessageFor(m => m.Country, "*") %></td>
          </tr>
          <tr>
            <td><%: Html.LabelFor(m => m.ContactPhone) %></td>
            <td><%: Html.TextBoxFor(m => m.ContactPhone) %></td>
            <td><%: Html.ValidationMessageFor(m => m.ContactPhone, "*") %></td>
          </tr>
          <tr>
            <td><%: Html.LabelFor(m => m.Latitude) %></td>
            <td><%: Html.TextBoxFor(m => m.Latitude) %></td>
            <td><%: Html.ValidationMessageFor(m => m.Latitude, "*") %></td>
          </tr>
          <tr>
            <td><%: Html.LabelFor(m => m.Longitude) %></td>
            <td><%: Html.TextBoxFor(m => m.Longitude) %></td>
            <td><%: Html.ValidationMessageFor(m => m.Longitude, "*") %></td>
          </tr>
          <tr>
            <td><input type ="submit" value="Save" /></td>
          </tr>
        </table>
        </fieldset>

    <% } %>

А вот пример того, как я использую его в файле с именем create.aspx

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

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    Host a Dinner
</asp:Content>

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

    <h2>Host a Dinner</h2>
    <% Html.RenderPartial("DinnerForm"); %>
    <div>
        <%: Html.ActionLink("Back to List", "Index") %>
    </div>

</asp:Content>

Ответы [ 3 ]

2 голосов
/ 25 октября 2010

Обратите внимание, что у вас есть <% } %> внизу файла .ascx?Это закрывающая скобка для <% using (Html.BeginForm()) {%>, которую вы, похоже, пропустили.

Добавьте

<% using (Html.BeginForm()) {%> 

чуть ниже

<%: Html.ValidationSummary("Please Corrent the Errors and Try Again.") %>

Результирующая форма

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<NerdDinner.Models.Dinner>" %>

<%: Html.ValidationSummary("Please Corrent the Errors and Try Again.") %>
<% using (Html.BeginForm()) {%>
        <fieldset>
            <legend>Fields</legend>

<table border="0">
          <tr>
            <td><%: Html.LabelFor(m => m.Title) %></td>
            <td><%: Html.TextBoxFor(m => m.Title) %></td>
            <td><%: Html.ValidationMessageFor(m => m.Title, "*") %></td>
          </tr>
          <tr>
            <td><%: Html.LabelFor(m => m.EventDate) %></td>
            <td><%: Html.TextBoxFor(m => m.EventDate) %></td>
            <td><%: Html.ValidationMessageFor(m => m.EventDate, "*") %></td>
          </tr>
          <tr>
            <td><%: Html.LabelFor(m => m.Description) %></td>
            <td><%: Html.TextAreaFor(m => m.Description) %></td>
            <td><%: Html.ValidationMessageFor(m => m.Description, "*") %></td>
          </tr>
          <tr>
            <td><%: Html.LabelFor(m => m.Address) %></td>
            <td><%: Html.TextBoxFor(m => m.Address) %></td>
            <td><%: Html.ValidationMessageFor(m => m.Address, "*") %></td>
          </tr>
          <tr>
            <td><%: Html.LabelFor(m => m.Country) %></td>
            <td><%: Html.DropDownListFor(m => m.Country, ViewData["countries"] as SelectList)%></td>
            <td><%: Html.ValidationMessageFor(m => m.Country, "*") %></td>
          </tr>
          <tr>
            <td><%: Html.LabelFor(m => m.ContactPhone) %></td>
            <td><%: Html.TextBoxFor(m => m.ContactPhone) %></td>
            <td><%: Html.ValidationMessageFor(m => m.ContactPhone, "*") %></td>
          </tr>
          <tr>
            <td><%: Html.LabelFor(m => m.Latitude) %></td>
            <td><%: Html.TextBoxFor(m => m.Latitude) %></td>
            <td><%: Html.ValidationMessageFor(m => m.Latitude, "*") %></td>
          </tr>
          <tr>
            <td><%: Html.LabelFor(m => m.Longitude) %></td>
            <td><%: Html.TextBoxFor(m => m.Longitude) %></td>
            <td><%: Html.ValidationMessageFor(m => m.Longitude, "*") %></td>
          </tr>
          <tr>
            <td><input type ="submit" value="Save" /></td>
          </tr>
        </table>
        </fieldset>

    <% } %>
1 голос
/ 25 октября 2010

У вас есть непарный <% } %> в конце вашего файла ascx.

Форма отсутствует. Похоже, вы пропустили:

<% using( Html.BeginForm() ) { %>

сверху, непосредственно перед сводкой проверки.

1 голос
/ 25 октября 2010

Удалите <%}%> из нижней части DinnerForm.ascx.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...