2010-08-19 76 views
0

我在一个视图中使用强类型的用户控件。编码如下:强类型的用户控件模型绑定不工作在Asp.Net MVC 2.0

这是我查看通话:

<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 调用。

+1

你得到了什么错误信息? – 2010-08-19 14:14:28

+0

它说“ProjectTasks.ascx(14):错误CS1026:)预计”。在Html.RenderPartial调用。 – Chinjoo 2010-08-19 14:18:27

回答

1

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

这基本上是MVC的问题。

3

你需要得到你的<%:语句的结束摆脱;的:

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

编辑:此外,因为我注意到你在我之前发布秒,你发现它,这适用于无论何时您使用<%:<%=语法,而不是Html.Label特定。