ASP.NET MVC komentáře ke článkům – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

ASP.NET MVC komentáře ke článkům – .NET – Fórum – Programujte.comASP.NET MVC komentáře ke článkům – .NET – Fórum – Programujte.com

 

Bibo0
Duch
8. 6. 2010   #1
-
0
-

Ahoj, potřeboval bych poradit. Zkouším si práci s MVC a dělám si takový jednoduchý RS. Mám db a v ní 2 tabulky (articles a comments), přidal jsem je do LINQ2SQL třídy, vytvořil relaci mezi komentáři a články (komentáře mají sloupec ClanekID, který je spojen s ID článku) a teď bych chtěl, aby fungovalo přidávání a zobrazování komentářů.
Controller:

        public ActionResult Clanek(int id)

{
Article clanek = obsah.Clanek(id);
return View(clanek);
}

Článek View:
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<h2>
<%: Model.Title %></h2>
<fieldset>
<div class="display-field">
<%: Model.Content %></div>
<div class="display-field">
<%: Model.Author %>
-
<%: String.Format("{0:g}", Model.Date) %></div>
</fieldset>
<p>
<% if (Model.JeAutoremClanku(Context.User.Identity.Name))
{ %>
<%: Html.ActionLink("Upravit", "Upravit", new { id = Model.ID })%>
|<% } %>
<%: Html.ActionLink("Zpátky na seznam", "Index") %>
</p>
<% foreach (var comment in Model.Comments)
{ %>
Name: <%= comment.Name %>
Comment: <%= comment.Text %>
<% } %>
</asp:Content>

Vypisuje to chybu, že není definice GetEnumerator pro Model.Comments a nevím co s tím. Poradíte někdo jak dále bych měl pokračovat? Hledal jsem nějaký návod, ale nic pořádného jsem nenašel, tak kdyžtak stačí jen navést (jak ještě pokračovat, aby třída Article si také pamatovala své komentáře). Díky moc

Nahlásit jako SPAM
IP: 82.117.156.–
JardaJirava0
Stálý člen
9. 6. 2010   #2
-
0
-

Ahoj, budeš si muset vytvořit DataLoadOptions a pomocí nich říci, že se k článku má zároveň natáhnout i komentář. Asi nějak takto



var loadOptions = new DataLoadOptions();
loadOptions.LoadWith<Clanek>(c => c.Komentar);
context.LoadOptions = loadOptions;


Pěkný den,

Jarda Jirava

Nahlásit jako SPAM
IP: 194.213.35.–
MCAD, MCPD
http://jirava.net/blog
http://xaml.cz - Magazín moderních technologií založených na XAML
Bibo0
Duch
13. 6. 2010   #3
-
0
-

Ať zkouším co zkouším, tak mi to prostě nejde. Zkoušel jsem to i s DataLoadOptions a nefunguje to.
Pořád:

foreach statement cannot operate on variables of type 'System.Data.Linq.EntitySet<FotbalSvitavkaMVC.Models.Comment>' 

because 'System.Data.Linq.EntitySet<FotbalSvitavkaMVC.Models.Comment>' does not contain a public definition for 'GetEnumerator'


a pokud zkusím webovou aplikaci spustit a dostat se ke článku, tak mi to pak vyhodí chybu:
CS0012: The type 'System.Data.Linq.EntitySet`1<T0>' is defined in an assembly that is not referenced. 

You must add a reference to assembly 'System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.


Díky moc za snahu a přeji hezký den

Nahlásit jako SPAM
IP: 82.117.156.–
Chrasty
~ Redaktor
+4
Posthunter
13. 6. 2010   #4
-
0
-

Můžeš si taky vytvořit třídu navíc, která bude ve formě vlastností obsahovat jak článek, tak jeho komentáře. Na ukázku kousek mého zdrojáku, kde tohle používám, jen místo článku tam mám fotografii:

public class CommentedPhoto

{
public Photo Photo { get; set; }
public int PrevPhotoID { get; set; }
public int NextPhotoID { get; set; }
public IQueryable<Comment> Comments { get; set; }
public Comment Comment { get; set; }

public CommentedPhoto(Photo photo, int prevPhotoID, int nextPhotoID, IQueryable<Comment> comments, Comment comment)
{
Photo = photo;
PrevPhotoID = prevPhotoID;
NextPhotoID = nextPhotoID;
Comments = comments;
Comment = new Comment();
}
}

Nahlásit jako SPAM
IP: 193.179.196.–
JardaJirava0
Stálý člen
14. 6. 2010   #5
-
0
-

Ahoj,

vypadá to, jako bys neměl referencovanou knihovnu System.Data.Linq.dll.

Pěkný den,

Jarda Jirava

Nahlásit jako SPAM
IP: 194.213.35.–
MCAD, MCPD
http://jirava.net/blog
http://xaml.cz - Magazín moderních technologií založených na XAML
Bibo0
Duch
14. 6. 2010   #6
-
0
-

Jo tak to opravdu pomohlo a díky za to, jen jsem teda myslel, že to půjde jinak :)

Edit: Pomohlo to od Chrastyho, ale zkusím ještě tu knihovnu.

Tak ne, knihovnou to nebylo, tu jsem měl referencovanou.

Nahlásit jako SPAM
IP: 82.117.156.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 62 hostů

Podobná vlákna

ASP.NET MVC Last login — založil kironet

ASP.NET MVC Validace datumu — založil Daiuqiri

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý