C# - Problemi i rješenja izdvojena tema

poruka: 2.151
|
čitano: 704.560
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
13 godina
neaktivan
offline
Re: C# - Problemi i rješenja

Ne možeš tako rješavati probleme. A da ti nije proradilo sa MySQL-om otišao bi na Postgre?

 

Naravno da se rješilo sa MySQL-om kad si na serveru kreirao bazu i njemu šalješ upite, isto bi bilo da si koristio SQL Server i bazu kreirao na serveru. Okani se MySQL-a sa .NET-om osim ako baš moraš, pored besplatnog SQL Server Express-a. Ograničenja koja ima Express verzija teško ćeš prekoračiti, tako da savjet je SQL Server Express, naravno skini i Management Studio.

Poruka je uređivana zadnji put uto 13.8.2013 23:21 (royalhero).
16 godina
odjavljen
offline
C# - Problemi i rješenja

A ako ti treba single-file rješenje, bez servera, onda je bolje ostaviti MSSQL na miru i uzeti SQLite, Firebird ili u krajnjem slučaju, Access bazu (bad idea).

http://nighthawk-software.blogspot.com/
Moj PC  
0 0 hvala 0
12 godina
neaktivan
offline
Re: C# - Problemi i rješenja
royalhero kaže...

Ne možeš tako rješavati probleme. A da ti nije proradilo sa MySQL-om otišao bi na Postgre?

 

Naravno da se rješilo sa MySQL-om kad si na serveru kreirao bazu i njemu šalješ upite, isto bi bilo da si koristio SQL Server i bazu kreirao na serveru. Okani se MySQL-a sa .NET-om osim ako baš moraš, pored besplatnog SQL Server Express-a. Ograničenja koja ima Express verzija teško ćeš prekoračiti, tako da savjet je SQL Server Express, naravno skini i Management Studio.

Možda je glupo pitanje jer sam početnik, ako bi bazu kreirao na serveru bili aplikacija radila na svakom PC-u ?

Optimizam je nedostatak iskustva
13 godina
neaktivan
offline
Re: C# - Problemi i rješenja
ShAdOw_GaBa kaže...

Možda je glupo pitanje jer sam početnik, ako bi bazu kreirao na serveru bili aplikacija radila na svakom PC-u ?

Na svim računarima na kojima ima instaliran SQL Server. Ako je to bookmark manager onda to nećeš raditi preko servera, nego SQLite ili XML fajl. Probaj oboje, SQLite ti je jedan fajl u kojem se čuvaju podaci, ali nije potreban server, a XML fajl bi u tvom slučaju bio formata:

<bookmark>

   <title>ime bookmarka</title>

   <url>lnik</url>

   <date>datum</date>

</bookmark>

 

.NET ima LINQ2XML, a ima i klase za rad sa XML-om, znači veoma lako čitati/upisivati.

 

Tekstualne datoteke izbjegavaj u širokom luku.

 

Čitanje bi išlo ovako otprilike:
var xdoc = new XDocument.Load("moj_xml_fajl.xml");

var bookmarks = from bookmark in xdoc.Descendants("bookmark")

                           select new Bookmark { Title = bookmark.Attribute("title").Value,

                                                Url = bookmark.Attribute("url").Value,

                                                Date = bookmark.Attribute("date).Value

                                               };

Gdje je Bookmark klasa koja ima ta tri atributa. Sad imaš listu bookmarks prođi foreach petljom i radi ispis, prebacivanje, šta želiš. Za upisivanje ide XElement, pa njegov child XElement, pa XAttribute.

 

O SQLite-u ne znam puno, samo sam ga par puta koristio, neka ti njega opiše sum_of_all_fears. :)

Poruka je uređivana zadnji put sri 14.8.2013 14:09 (royalhero).
12 godina
neaktivan
offline
Re: C# - Problemi i rješenja

Već sam napravio isti app u XML-u .Sad želim probat sa SQLiteom.

Optimizam je nedostatak iskustva
16 godina
odjavljen
offline
Re: C# - Problemi i rješenja
ShAdOw_GaBa kaže...

Možda je glupo pitanje jer sam početnik, ako bi bazu kreirao na serveru bili aplikacija radila na svakom PC-u ?

E pa baš za to ti je SQLite idealan.

 

Skineš library za njega (.net). Ovdje nađi x86 (32bit) setup za onu verziju .neta koju koristiš. Skini, instaliraj.

 

U projektu odi u Add References i nađi System.Data.SQLite. Dodaj ga i includeove. Sa njime radiš isto kao i sa "običnim" SQLom - ima SqlDataAdapter (ADO.Net klase). Samu bazu možeš napraviti u npr. SQLite Database Browseru.

 

I da bi to radilo na bilo kojem PCju, sa aplikacijom daš dll (koji će VS sam kopirati u folder od aplikacije) i bazu. To je to.

 

Detaljnih tutoriala kako se koristiti SQLiteom iz .Neta na internetu imaš more. Ako negdje zapneš, pitaj.

http://nighthawk-software.blogspot.com/
12 godina
neaktivan
offline
Re: C# - Problemi i rješenja
Sum_of_all_fears kaže...
ShAdOw_GaBa kaže...

Možda je glupo pitanje jer sam početnik, ako bi bazu kreirao na serveru bili aplikacija radila na svakom PC-u ?

E pa baš za to ti je SQLite idealan.

 

Skineš library za njega (.net). Ovdje nađi x86 (32bit) setup za onu verziju .neta koju koristiš. Skini, instaliraj.

 

U projektu odi u Add References i nađi System.Data.SQLite. Dodaj ga i includeove. Sa njime radiš isto kao i sa "običnim" SQLom - ima SqlDataAdapter (ADO.Net klase). Samu bazu možeš napraviti u npr. SQLite Database Browseru.

 

I da bi to radilo na bilo kojem PCju, sa aplikacijom daš dll (koji će VS sam kopirati u folder od aplikacije) i bazu. To je to.

 

Detaljnih tutoriala kako se koristiti SQLiteom iz .Neta na internetu imaš more. Ako negdje zapneš, pitaj.

Kako saznati connection string i koja ekstenzija baze mora biti

Optimizam je nedostatak iskustva
13 godina
neaktivan
offline
Re: C# - Problemi i rješenja
ShAdOw_GaBa kaže...

Kako saznati connection string i koja ekstenzija baze mora biti

Ekstenzija je .db. Koliko znam konekcioni string mora sadržavati Data Source i Version.

14 godina
neaktivan
offline
Re: C# - Problemi i rješenja

Connection string se lako može kreirati npr. kreiranjem prazne datoteke s UDL ekstenzijom. Tada na dvoklik se pojavi dijalog gdje se odabere provider, baza itd. i kada se to sve spremi UDL datoteka se može otvoriti pomoću notepada i tada ćete vidjeti connection string.

Kada lajavci laju onda završe ovako: http://i471.photobucket.com/albums/rr77/toropreto/2012-07-0813_30_07.gif
12 godina
neaktivan
offline
Re: C# - Problemi i rješenja
TracerCPP kaže...

Connection string se lako može kreirati npr. kreiranjem prazne datoteke s UDL ekstenzijom. Tada na dvoklik se pojavi dijalog gdje se odabere provider, baza itd. i kada se to sve spremi UDL datoteka se može otvoriti pomoću notepada i tada ćete vidjeti connection string.

Znaš li možda kako kreirati SQLITE .db fbazu (file) te connection string ? 

Optimizam je nedostatak iskustva
14 godina
neaktivan
offline
Re: C# - Problemi i rješenja

Umjesto SQL Lite-a preporučio bih MS Access bazu. Isto je riječ o bazi koja se nalazi u datoteci, no nju je puno jednostavnije integrirati jer je Jet sastavni dio Windows OS-a.

Kada lajavci laju onda završe ovako: http://i471.photobucket.com/albums/rr77/toropreto/2012-07-0813_30_07.gif
16 godina
odjavljen
offline
Re: C# - Problemi i rješenja
ShAdOw_GaBa kaže...

Kako saznati connection string i koja ekstenzija baze mora biti

Eto, da svi znaju.

 

"Data Source=path_do_fajla;Version=3;Compress=True;"

royalhero kaže...

Ekstenzija je .db. Koliko znam konekcioni string mora sadržavati Data Source i Version.

Uobičajeno je .db, može bilo što. Neki koriste i .sqlite3

ShAdOw_GaBa kaže...

Znaš li možda kako kreirati SQLITE .db fbazu (file) te connection string ? 

Bazu kreiraš sa onim SQLite Browserom kojeg sam ti linkao.

TracerCPP kaže...

Umjesto SQL Lite-a preporučio bih MS Access bazu. Isto je riječ o bazi koja se nalazi u datoteci, no nju je puno jednostavnije integrirati jer je Jet sastavni dio Windows OS-a.

Sporo, sporo, sporo. Ja sam radio neki manager app koji je morao (nažalost) čitati oveću količinu podataka iz Access baze. Na kraju je ispalo daleko brže selectati sve iz nje i prebaciti u temp sqlite fajl i onda po njemu raditi. Očaj na svemu preko 5k redaka.

 

A što se tiče jednostavnosti deploya, za sqlite treba samo dati .dll sa aplikacijom. Čak ga ne treba ni registrirati u sustavu. Testirano x puta.

 

I evo jedan primjerić (taman slučajno otvoren u VSu):

 

        error_handler error_handler = new error_handler(); //error handler
        postavke postavke = new postavke(); //čitanje postavki iz XMLa

        SQLiteConnection sqlite_conn;
        SQLiteCommand sqlite_cmd;
        SQLiteDataAdapter sqlite_adapter;


      ///<summary>
        ///Postavlja SQLite konekciju, očekuje lokaciju baze iz postavki (ne conn string!)
        ///</summary>
        public void SetSqliteCon()
        {
            if (postavke.sqlite_location != null)
            {
                postavke.ReadSettings();
            }
            else
            {
                //
            }
           
            try
            {
                sqlite_conn = new SQLiteConnection(String.Format("Data Source={0};Version=3;Compress=True;", postavke.sqlite_location));
            }
            catch (Exception ex)
            {
                error_handler.ErrorText(ex.ToString(), "SQLite conn error");
                MessageBox.Show("Greška u spajanju na bazu. Molimo pokušajte ponovo", "SQLite error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        /// <summary>
        /// Izvršava bilo koji SQLite query, vraća broj izmijenjenih redaka
        /// </summary>
        public int ExecuteSqliteQuery(string txtQuery)
        {
            int rowCount = 0;

            try
            {
                SetSqliteCon();
                sqlite_conn.Open();
                sqlite_cmd = sqlite_conn.CreateCommand();
                sqlite_cmd.CommandText = txtQuery;
                rowCount = sqlite_cmd.ExecuteNonQuery();
                sqlite_conn.Close();
            }
            catch (Exception ex)
            {
                error_handler.ErrorText(ex.ToString(), String.Format("SQLite query error - {0}", txtQuery));
                MessageBox.Show("Greška u zapisivanju u bazu, molimo pokušajte ponovno", "SQLite error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            return rowCount;
        }

        ///<summary>
        ///generički SELECT executor, vraća DataTable
        ///</summary>
        public DataTable GetSqliteData(string select)
        {
            DataSet sqlite_ds = new DataSet();
            DataTable sqlite_dtable = new DataTable();

            DataTable returnTable = null;

            try
            {
                SetSqliteCon();
                sqlite_conn.Open();
                sqlite_cmd = sqlite_conn.CreateCommand();
                sqlite_adapter = new SQLiteDataAdapter(select, sqlite_conn);
                sqlite_ds.Reset();
                sqlite_adapter.Fill(sqlite_ds);
                sqlite_dtable = sqlite_ds.Tables[0];
                sqlite_conn.Close();

                returnTable = sqlite_dtable;
            }
            catch (Exception ex)
            {
                error_handler.ErrorText(ex.ToString(), String.Format("SQLite SELECT query error - {0}", select));
                MessageBox.Show("Greška u čitanju iz baze, molimo pokušajte ponovno", "SQLite error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            return returnTable;
        }

Eto, to je to. Čitanje i pisanje po SQLiteu, ovaj error_handler zanemarite. I ovu klasu postavke, ta čita konfiguraciju iz XML fajla.

http://nighthawk-software.blogspot.com/
14 godina
neaktivan
offline
Re: C# - Problemi i rješenja
Sum_of_all_fears kaže...
Sporo, sporo, sporo. Ja sam radio neki manager app koji je morao (nažalost) čitati oveću količinu podataka iz Access baze. Na kraju je ispalo daleko brže selectati sve iz nje i prebaciti u temp sqlite fajl i onda po njemu raditi. Očaj na svemu preko 5k redaka.

 

A što se tiče jednostavnosti deploya, za sqlite treba samo dati .dll sa aplikacijom. Čak ga ne treba ni registrirati u sustavu. Testirano x puta.

Ja nemam nikakvih problema s Accessom a radim s access bazama od po 2 milijuna zapisa. Usto, za Access ne treba niti vući niti jedan dll uz aplikaciju, a podržan je i direktno kroz ADO što je velika prednost gdje god da se programira. Iako, ako radim baš nešto ozbiljno onda  koristim samo MS SQL server. Access tek kao početnu bazu koja se kasnije upsize-a na SQL server.

 

A sql lite mi se ne sviđa i kada je riječ o više-korisničkom okruženju. Tu stvari znaju biti poprilično nezgodne zbog načina zaključavanja: "Multiple processes can be doing a SELECT at the same time. But only one process can be making changes to the database at any moment in time, however." LINK, dok Access bez problema radi s 255 konkurentnih usera.

 

Obje te "baze" mogu poslužiti tek za osnovne stvari, dok tek profesionalne poput MS SQL, DB2, Oracle i sl. su zaista prave baze koje u potpunosti imaju sva ACID svojstva.

Kada lajavci laju onda završe ovako: http://i471.photobucket.com/albums/rr77/toropreto/2012-07-0813_30_07.gif
16 godina
odjavljen
offline
Re: C# - Problemi i rješenja

Meni je na 35k stvarao gadne probleme.

 

SQLite je namijenjen za radne stanice, za situacije gdje jedan user radi na aplikaciji. Nikad ga ne koristim ako će se spajati više od 1 usera - odmah idem na MSSQL.

http://nighthawk-software.blogspot.com/
13 godina
neaktivan
offline
C# - Problemi i rješenja

Koja bi bila najbolja aplikacija za raditi ako već imam neke osnove?Želio bih napraviti neku aplikaciju koja koristi bazu i ima grafičko sučelje.

 
0 0 hvala 0
16 godina
odjavljen
offline
Re: C# - Problemi i rješenja

Videoteka, knjižnica... To su najjednostavniji primjeri.

http://nighthawk-software.blogspot.com/
13 godina
neaktivan
offline
Re: C# - Problemi i rješenja
Sum_of_all_fears kaže...

Videoteka, knjižnica... To su najjednostavniji primjeri.

Može probati i neku kasu za bar/trgovinu, ali bez POS printanja. :)

16 godina
odjavljen
offline
Re: C# - Problemi i rješenja

I bez fiskalizacije Smijeh

http://nighthawk-software.blogspot.com/
15 godina
offline
C# - Problemi i rješenja
Ekipa pomagajte...
Novi sam u C# i znanje mi je minimalno do nikakvo :)
Proučavam i pokušavam "skinuti" web stranicu, odnosno njen HTML kod kako bih ga mogao poslije parsati. Ovo je jedan primjer koda
 
string url = http://www.bug.hr/;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
httpClient.DefaultRequestHeaders.Add("user-agent", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)");
request.Method = "GET";
HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync();
var stream = response.GetResponseStream();
var sr = new StreamReader(stream);
var content = sr.ReadToEnd();
 
 
kad se ovo završi u varijabli content je spremljen cijeli HTML kod što je odlično, ali ovaj isti postupak mi ne radi za http://www.blitz-cinestar.hr 
Sa ove stranice u varijabli content imam sljedeći text:
"Copyright Svi sadržaji, dokumenti, podaci i informacije ....."
Očito njihov server kuži da idem preko HttpWebRequest
pa me odbije. Dali je to moguće ikako zaobići, odnosno da simuliram kao da pristupam iz web preglednika?
Ima li tko kakvu ideju?
 
 
Moj PC  
0 0 hvala 0
12 godina
neaktivan
offline
Re: C# - Problemi i rješenja
izzy007 kaže...
Ekipa pomagajte...
Novi sam u C# i znanje mi je minimalno do nikakvo :)
Proučavam i pokušavam "skinuti" web stranicu, odnosno njen HTML kod kako bih ga mogao poslije parsati. Ovo je jedan primjer koda
 
string url = http://www.bug.hr/;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
httpClient.DefaultRequestHeaders.Add("user-agent", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)");
request.Method = "GET";
HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync();
var stream = response.GetResponseStream();
var sr = new StreamReader(stream);
var content = sr.ReadToEnd();
 
 
kad se ovo završi u varijabli content je spremljen cijeli HTML kod što je odlično, ali ovaj isti postupak mi ne radi za http://www.blitz-cinestar.hr 
Sa ove stranice u varijabli content imam sljedeći text:
"Copyright Svi sadržaji, dokumenti, podaci i informacije ....."
Očito njihov server kuži da idem preko HttpWebRequest
pa me odbije. Dali je to moguće ikako zaobići, odnosno da simuliram kao da pristupam iz web preglednika?
Ima li tko kakvu ideju?
 
 

Probaj sa WebClient clasom (nalazi se u namespaceu System.Net) i metodom downloadhtml. :

var downloader = new WebClient();

string html=downloader.DownloadString(http://www.bug.hr);

Optimizam je nedostatak iskustva
13 godina
neaktivan
offline
Re: C# - Problemi i rješenja
ShAdOw_GaBa kaže...

Probaj sa WebClient clasom (nalazi se u namespaceu System.Net) i metodom downloadhtml. :

var downloader = new WebClient();

string html=downloader.DownloadString(http://www.bug.hr);

Nije problem sa klasom i načinom pristupa, nego što nešto fali u HTTP GET headeru i stranica raspozna da je ne poziva browser. Sa WebClient je ista stvar, Bug.hr će raditi jer nema to ograničenje, dok http://www.blitz-cinestar.hr ima.

 

Meni pada na pamet možda glupo rješenje, ali probaj, da postaviš web browser kontrolu, postaviš url na taj koji želiš i onda uzmeš DocumentText ili tako nešto, gdje je spremljen HTML?

15 godina
offline
Re: C# - Problemi i rješenja
royalhero kaže...
ShAdOw_GaBa kaže...

Probaj sa WebClient clasom (nalazi se u namespaceu System.Net) i metodom downloadhtml. :

var downloader = new WebClient();

string html=downloader.DownloadString(http://www.bug.hr);

Nije problem sa klasom i načinom pristupa, nego što nešto fali u HTTP GET headeru i stranica raspozna da je ne poziva browser. Sa WebClient je ista stvar, Bug.hr će raditi jer nema to ograničenje, dok http://www.blitz-cinestar.hr ima.

 

Meni pada na pamet možda glupo rješenje, ali probaj, da postaviš web browser kontrolu, postaviš url na taj koji želiš i onda uzmeš DocumentText ili tako nešto, gdje je spremljen HTML?

 Tu si u pravu. Problem je u HEADER-im a koje šaljem.

Koristio sam Fiddler za čekiranje mog requesta iz aplikacije te iz preglednika i postoje razlike.

Aplikacija uopće ne šalje ovaj dio

 

User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)

 

a taj je ključan da bi zahtjev bio prepoznat kao da dolazi iz pretraživača. Ja sam u svoj kod dodao sljedeću liniju:

 

httpClient.DefaultRequestHeaders.Add("user-agent", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)");

 

ali to očito nije prošlo. Nije mi jasno kako progurati ovaj dio s HttpWebRequest klasom.

 

 

13 godina
neaktivan
offline
Re: C# - Problemi i rješenja

Pa HttpWebRequest ima UserAgent property.

Znači ako imaš neki HttpWebRequest koji se zove request, user agent bi mu trebao ovako postaviti:
request.UserAgent = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)";

 

Ostavi se WebClient-a, HttpWebRequest ima punu kontrolu nad requestom.

Poruka je uređivana zadnji put uto 20.8.2013 23:14 (royalhero).
15 godina
offline
Re: C# - Problemi i rješenja
Budući da radim Windows 8 Store APP iliti Windows 8 Metro aplikaciju, taj property ne postoji. On vjerojatno postoji u win forms aplikaciji ili ASP projektu ali u ovom ga nema na žalost
13 godina
neaktivan
offline
Re: C# - Problemi i rješenja

Pa što odmah ne kažeš da radiš sa WinRT frameworkom.

 

Onda radi sa HttpClient klasom i HttpRequestMessage. Uglavnom postaviš HttpClient objekt, pa onda httpRequestMessage i u njezinu kolekciju Headers dodaješ headere.

Zatim response dobivaš asihrono preko client.SendAsync(message), naravno radi preko async i await.

15 godina
offline
Re: C# - Problemi i rješenja

Sorry što sam napravio pomutnju s čim radim.

A šta da kažem, teški sam početnik :)

 

evo sad sam napravio ovo i to radi

 

string url = www.nešto.hr

httpClient = new HttpClient();

var req = new HttpClient();

var message = new HttpRequestMessage(HttpMethod.Get, url);

message.Headers.Add("User-Agent", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)");

var response = await req.SendAsync(message);

 

 

E sad kako da iz RESPONSE varijable dobijem HTML kod??

13 godina
neaktivan
offline
Re: C# - Problemi i rješenja

Nisam u mogućnosti trenutno da pravim WinRT aplikaciju, ali mislim da response ima Content property, a on metodu za čitanje, ja sam tako radio reader za WinRT, ali meni nisu trebali headeri. Ugl, bilo je nešto tipa

var result = await response.Content.ReadAsync();

 

Evo provjerio sam na StackOverflowu, metoda je

ReadAsStringAsync, naravno to je asihrono i vraća Task, ako želiš string, onda piši tipa
var result = response.Content.ReadAsStringAsync().Result;

Poruka je uređivana zadnji put uto 20.8.2013 23:57 (royalhero).
15 godina
offline
Re: C# - Problemi i rješenja
Probat ću to sve malo istražiti, pa se nadam da ću uspjeti dobiti željeni rezultat.
15 godina
offline
Re: C# - Problemi i rješenja
royalhero kaže...

Nisam u mogućnosti trenutno da pravim WinRT aplikaciju, ali mislim da response ima Content property, a on metodu za čitanje, ja sam tako radio reader za WinRT, ali meni nisu trebali headeri. Ugl, bilo je nešto tipa

var result = await response.Content.ReadAsync();

 

Evo provjerio sam na StackOverflowu, metoda je

ReadAsStringAsync, naravno to je asihrono i vraća Task, ako želiš string, onda piši tipa
var result = response.Content.ReadAsStringAsync().Result;

 Tipkovnica ti se pozlatila {#}

Ovo zadnje što si napisao je konačno upogonilo stvar i dobio sam HTML sa stranice

 

var result = response.Content.ReadAsStringAsync().Result;

12 godina
neaktivan
offline
C# - Problemi i rješenja

Imam problem sa jednom ASP.Net MVC 4 aplikacijom.

Kreirao sam dva modela sa pripadajućim kontrolerima u svrhu jednostavnih CRUD funkcionalnosti.

Model1:

using System;

using System.Collections.Generic;

using System.ComponentModel.DataAnnotations;

using System.ComponentModel.DataAnnotations.Schema;

using System.Data.Entity;

using System.Globalization;

using System.Web.Security;

 

namespace App.Models

{

   public class NewsArticle

   {

     [Key]

     [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]

     public int ID { get; set; }

     [Required(ErrorMessage = "Morate upisati ime")]

     [Display(Name = "Ime")]

     public string Name { get; set; }

 

     [Required(ErrorMessage = "Morate upisati sadržaj")]

     [Display(Name = "Sadržaj")]

     public string Body { get; set; }

 

 

     [Display(Name = "Prva slika")]

     public string Url1{ get; set; }

 

     [Display(Name = "Druga slika")]

     public string Url2 { get; set; }

 

     [Display(Name = "Treća slika")]

     public string Url3 { get; set; }

 

     [Required(ErrorMessage = "Morate upisati svoje ime")]

     [Display(Name = "Autor")]

     public string Author { get; set; }

 

     [Required(ErrorMessage = "Morate upisati datum")]

     [Display(Name = "Datum")]

     public string Date { get; set; }

 

   }

 

   public class NewsArticlesContext : DbContext

   {

     public DbSet<NewsArticle> NewsArticlesSet { get; set; }

   }

 

}

 

 

Model2:

using System;

using System.Collections.Generic;

using System.ComponentModel.DataAnnotations;

using System.ComponentModel.DataAnnotations.Schema;

using System.Data.Entity;

using System.Globalization;

using System.Web.Security;

 

namespace App.Models

{

   public class Comment

   {

     [Key]

     [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]

     public int ID{get; set;}

     [Required(ErrorMessage="Morate upisati ime")]

     [Display(Name="Ime")]

     public string Name { get; set; }

     [Required(ErrorMessage = "Morate odabrati kategoriju")]

     [Display(Name = "Ime")]

     public string Category { get; set; }

     [Required(ErrorMessage = "Morate upisati sadžaj")]

     [Display(Name = "Sadržaj")]

     public string Body { get; set; }

     [Required(ErrorMessage = "Morate upisati svoje ime")]

     [Display(Name = "Autor")]

     public string Author { get; set; }

     [Required(ErrorMessage = "Morate upisati datum")]

     [Display(Name = "Datum")]

     public string Date { get; set; }

   }

 

   public class CommentsContext : DbContext

   {

     public DbSet<Comment> CommentsSet { get; set; }

   }

 

 

}

Želim da mi View sadrži oba modela i da iz njih mogu čitati podatke.

Probao sam sa ViewModelom:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

 

namespace App.ViewModels

{

   public class NewsViewModel

   {

     public IEnumerable<App.Models.Comment> Comments{ get; set; }

     public IEnumerable<App.Models.NewsArticle> NewsArticles { get; set; }

   }

}

Modificirao sam kontroler:

  public ActionResult Index()

     {

       NewsViewModel vm = new NewsViewModel();

       return View(vm);

 

     }

i View:
@model IEnumerable<Blogy.ViewModels.NewsViewModel>
@{
   ViewBag.Title = "Index";
}
<h2>Index</h2>
<p>
   @Html.ActionLink("Create New", "Create")
</p>
<table>
@foreach (var item in Model.NewsArticles) {
   <tr>
     <td>
       @Html.DisplayFor(modelItem => item.Name)
     </td>
     <td>
       @Html.DisplayFor(modelItem => item.Body)
     </td>
     <td>
       @Html.DisplayFor(modelItem => item.Url1)
     </td>
     <td>
       @Html.DisplayFor(modelItem => item.Url2)
     </td>
     <td>
       @Html.DisplayFor(modelItem => item.Url3)
     </td>
     <td>
       @Html.DisplayFor(modelItem => item.Author)
     </td>
     <td>
       @Html.DisplayFor(modelItem => item.Date)
     </td>
     <td>
       @Html.ActionLink("Edit", "Edit", new { id=item.ID }) |
       @Html.ActionLink("Details", "Details", new { id=item.ID }) |
       @Html.ActionLink("Delete", "Delete", new { id=item.ID })
     </td>
   </tr>
}
</table>
Ali dobijam error:
(Error) (Error)
 Ako netko ima rješenje, neka posta, hitno mi treba rješenje.
Optimizam je nedostatak iskustva
Poruka je uređivana zadnji put ned 25.8.2013 15:36 (ShAdOw_GaBa).
Moj PC  
0 0 hvala 0
Nova poruka
E-mail:
Lozinka:
 
vrh stranice