强类型用户控件模型绑定在Asp.Net MVC 2.0中不起作用

时间:2010-08-19 14:10:50

标签: c# asp.net-mvc asp.net-mvc-2 model-binding

我在其中一个视图中使用强类型用户控件。编码如下:

这是我视图中的调用:

<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 个答案:

答案 0 :(得分:3)

您需要摆脱;声明末尾的<%:

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

修改:此外,由于我发现您在我之前发布了几秒钟,因此无论何时使用<%:<%=语法,这都适用于{ {1}}具体。

答案 1 :(得分:1)

发现了这个问题。 html.Label不应以“;”结尾。 <%:Html.Label(item.TaskStatus.ToString());%>应删除<%:Html.Label(item.TaskStatus.ToString())%>分号。

这基本上是MVC的问题。