Je viens de commencer à apprendre MVC3. J'ai codé en ASP.NET traditionnel Pendant un moment et maintenant je voudrais passer à MVC.MVC3 Razor View Engine
Certaines choses que je ne comprends pas (probablement été utilisés différemment alors dans ASP.NET traditionnel)
Je suis en train d'écrire un module simple nouvelles qui affiche des nouvelles et permettent d'insérer un commentaire pour eux .
Donc première étape est, j'ai créé une table sur mon serveur SQL: TblNews TblCategories TblComments
Créé classe de données Linq2SQL dans le dossier Modèles et l'a nommé News.dbml contrôleur créés HomeController.cs et une méthode appelé Index() dedans. présente comme suit:
public ActionResult Index()
{
Models.NewsDataContext db = new Models.NewsDataContext();
var Model = (from n in db.TblNews
select new
{
ID = n.ID,
Title = n.Title,
Description = n.Description,
Category = n.TblCategory.CategoryName
});
return View(Model);
}
Comme vous le voyez, je suis en train de sélectionner toutes les nouvelles et leurs noms de catégorie (TblNews et TblCategories ont relation entre eux)
Après que je retourne les données que j'ai eu de la requête.
Dans la vue i ont:
@{
ViewBag.Title = "News Index Page";
}
<table>
@foreach (var item in Model)
{
<tr>
<td>
ID: @item.ID<br />
Title: @item.Title<br />
Description: @item.Description<br />
Category: @item.Category
</td>
</tr>
}
</table>
qui doit retourner quelque chose comme:
ID: 4
Title: asd
Description: asd
Category: 2
Ce sont mes données d'échantillons de tables.
Quand je lance la page, il me donne un message d'erreur:
'object' does not contain a definition for 'ID'
mais quand je me concentre ma souris sur "élément" variable, il contient en fait:
{ ID = 4, Title = asd, Description = asd, Category = Test2 }
J'ai essayé aussi de revenir Linq Requête en tant que liste en ajoutant .ToList() à la fin de celui-ci.
Quelqu'un peut-il me donner des indices et me diriger dans la bonne direction? Désolé, si j'ai expliqué quelque chose de façon incorrecte. L'anglais n'est pas ma langue maternelle. S'il vous plaît demander si vous avez besoin de plus d'informations.
Merci beaucoup.
P.S. J'utilise Visual Studio 2012
@ user2110925 Ah vous devez sélectionner dans en classe 'TblNews' dans votre déclaration LINQ , changez-le en 'select new TblNews' (ou quel que soit le nom de cette classe), puis changez votre modèle en' List' (ou quelle que soit cette classe) –
mattytommo
Je ne comprends pas vraiment cette partie d'une classe que je devrais correspondre à. o_O Comment puis-je savoir? Mon nom de table est TblNews mais je ne comprends pas vraiment ce truc de classe. en ASP.NET traditionnel Je n'ai jamais eu à utiliser un type pour les tables, je ne devais les utiliser que lorsque je remplissais une liste déroulante ou quelque chose comme ça. Maintenant, je suis vraiment confus ... :( –
@ user2110925 Je pense que votre classe est 'TblNews. 'Fondamentalement, dans votre' NewsDataContext', vous aurez un 'DbSet' ouais? Cela signifie que vous devez utiliser le La classe 'TblNews' n'est pas spécifique à MVC, elle est spécifique à l'utilisation d'un ORM tel que framework d'entité, linq to sql, nhibernate etc. –
mattytommo