Строго типизированная привязка модели управления пользователями не работает в Asp.Net MVC 2.0 - PullRequest
0 голосов
/ 19 августа 2010

Я использую строго типизированный пользовательский элемент управления в одном из представлений.Кодировка следующая:

Это вызов в моем представлении:

<table>
    <%    
    for (int i = 0; i < ((List<string>)ViewData["MyProjects"]).Count; i++)
    {
        string viewIndex = "MyTasks" + i.ToString();%>
    <tr>
        <td>
            <%Html.RenderPartial("ProjectTasks", ViewData[viewIndex]); %>
        </td>
    </tr>
    <% } %>
</table>

Мой пользовательский элемент управления имеет следующий код:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<List<Application_Service.DTOs.TaskDTO>>" %>
<%if(Model.Count > 0){ %>
<table>   
    <tr>
        <td>Task Name</td>
        <td>Task Status</td>
    </tr>
    <% foreach (var item in ViewData.Model) {%>
    <tr>
        <td>
            <%:Html.Label(item.TaskName); %>
        </td>
        <td>
            <%:Html.Label(item.TaskStatus.ToString());%>
        </td>
    </tr>
    <%} %>
</table>
<%} %>

Проблема в томЯ получаю сообщение об ошибке при попытке связать модель в пользовательском управлении.Я не уверен, в чем здесь проблема.

Сообщение об ошибке:

"ProjectTasks.ascx (14): ошибка CS1026:) ожидается".при вызове Html.RenderPartial.

Ответы [ 2 ]

3 голосов
/ 19 августа 2010

Вам нужно избавиться от ; в конце ваших <%: заявлений:

<td> 
    <%:Html.Label(item.TaskName) %> 
</td> 
<td> 
    <%:Html.Label(item.TaskStatus.ToString())%> 
</td> 

Редактировать: Кроме того, поскольку я заметил, что вы разместили несколько секунд до менячто вы нашли его, это относится к любому, когда вы используете синтаксис <%: или <%= и не является Html.Label специфичным.

1 голос
/ 19 августа 2010

Нашел проблему. html.Label не должен заканчиваться на ";" <%:Html.Label(item.TaskStatus.ToString());%> должен быть <%:Html.Label(item.TaskStatus.ToString())%> Точка с запятой удалена.

Это в основном проблема с MVC.

...