2010-08-19 9 views
0

J'utilise un contrôle utilisateur fortement typé dans l'une des vues. Le codage est la suivante:La liaison de modèle de contrôle utilisateur fortement typée ne fonctionne pas dans Asp.Net MVC 2.0

C'est l'appel à mon avis:

<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> 

Mon contrôle utilisateur a le code suivant:

<%@ 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> 
<%} %> 

Le problème est que je reçois une erreur en essayant appeler appelle le modèle dans le contrôle utilisateur. Je ne suis pas sûr de quel est le problème ici.

Message d'erreur:

"ProjectTasks.ascx (14): erreur CS1026: ) prévu". à l'appel Html.RenderPartial .

+1

Quel message d'erreur obtenez-vous? –

+0

Il est dit "ProjectTasks.ascx (14): erreur CS1026:) attendu". à l'appel Html.RenderPartial. – Chinjoo

Répondre

1

a trouvé le problème. html.Label ne doit pas se terminer par ";". <%:Html.Label(item.TaskStatus.ToString());%> doit être <%:Html.Label(item.TaskStatus.ToString())%> Le point-virgule a été supprimé.

Ceci est fondamentalement un problème avec le MVC.

3

Vous devez vous débarrasser de la ; à la fin de vos <%: déclarations:

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

Edit: Aussi, depuis que je remarqué que vous avez posté secondes avant moi que vous l'avez trouvé, cela s'applique à chaque fois vous utilisez la syntaxe <%: ou <%= et n'est pas Html.Label spécifique.