Diskuze: ASP Core 2.01 - Basic CMS
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 10 zpráv z 10.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Úplně nechápu dotaz, co přesně ti nejde, ale zkusím ti trochu pomoci.
public class Clanek
{
public int ClanekID { get; set; }
public string ClanekTitulek { get; set; }
public string ClanekPopis { get; set; }
public string ClanekText { get; set; }
public string ClanekAutor { get; set; }
public DateTime ClanekDatum { get; set; }
}
3. Rebuild projektu, aby se třída zkompilovala a následně do složky Controllers přidáš nový controller (MVC controller with views using entity framework) s názvem ClankyController, databázovým contextem a modelem (Clanek).
4. VS ti vygeneruje controller s CRUD operacemi, takže nemusíš nic řešit u jednoduchého modelu jako je tento. Dále ti vygeneruje cshtml šablony do složky Views/Clanky (Index, Details, Edit, Create, Delete). Ty si jen upravíš podle sebe.
5. Vytvoříš migraci databáze -> otevřeš Package Manager Console a zapíšeš nejprve:
add-migration NazevMigrace
Potom další příkaz pro vytvoření tabulek v DB:
update-database
6. Spustíš aplikaci a musí ti vše fungovat.
Pokud bys chtěl přidávat výpis článků třeba na homepage, pak musíš zaregistrovat context v controlleru, určit model a jakým způsobem se články mají řadit. Třeba takto:
public class HomeController : Controller
{
// zaregistrování DB contextu
private readonly ApplicationDbContext _context;
public HomeController(ApplicationDbContext context)
{
// konstruktor
_context = context;
}
// GET: Clanky - metoda musí být asynchronní a za běhu načteme články samotné
public async Task<IActionResult> Index()
{
// vrátí nám zobrazení (view) s výsledky z DB contextu Clanek a seřadí sestupně podle ID
// pouze tento řádek pracuje s DB a stačí k výpisu článků
return View(await _context.Clanek.OrderByDescending(a => a.ClanekID).ToListAsync());
}
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error()
{
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
}
Snad jsem ti trochu pomohl.
Srry, teraz keď to po sebe čítam, nenapísal sem to zrovna šťastne Byla to skúr prvá myšlienka
mohol sem to sformulovať lepšie. Skúsim znova: Kamoš(User) po mne chce aby
sa na web prihlásil a cez niake rozhranie mohol pridávať na web články a
editovať ich. Článek môže obsahovať napr 2 nadpise, 5 odstavcou, niekde v
strede článku obrázok, niake odkaze adt... Proste taký word dokument ale na
webe, ak ma chapes. Mne ide oto že neviem ako spraviť to rozhranie a ako ten
članek mam ukladateľ na webe(typel bych proste cele html ako string do db,
alebo xml). Ja bych to robyl tak ze bych si to proste nakodil, ale on asi tazko
preto potrebuje to rozhranie. Myslím že existuje niaky txt editor který ma na
výstupe html string, alebo nieco podobné len neviem otom, resp neviem ako je
toto v praxi riesene a to je to naco sa pitam. Priložím obrázok ako by ten
clánek mal napr vyzerat. Neviem inak ako bych to vysvetlil srry
Mám hosting na forpsi.sk a ked sem sa tam snazil dostat 3.1 tak mi to neslo, preto pouzivam 2.1
Pošli TIKET v administraci na forpsi.sk se žádostí o migraci na nový typ serveru, který podporuje .NET Core 3.1. Na forpsi.cz běží již 5 typů serverů, které to podporují, takže SK na tom bude nejspíš stejně.
Jinak tomu, jak jsi problém popsal teď, už rozumím. Ty bys potřeboval kompletní redakční systém, což se příliš jednoduše udělat nedá.
Je tu však jedna možnost jak alespoň částečně dosáhnout toho, co potřebuješ. řešením by bylo vytvořit model článek, který by obsahoval kolekci ICollection<> například Odstavce. Odstavec by představoval jakýsi sub-článek. Celé bych to řešil takto:
Clanek.cs
public class Clanek
{
public int ClanekID { get; set; }
public string ClanekName { get; set; }
public string ClanekPopis { get; set; }
public ICollection<Odstavec> Odstavce { get; set; }
}
Odstavec.cs
public class Odstavec
{
public int OdstavecID { get; set; }
public int ClanekID { get; set; }
public Clanek Clanek { get; set; }
public string Text { get; set; }
public int ObrazekID { get; set; }
public Obrazek Obrazky { get; set; }
}
Obrazek.cs
public class Obrazek
{
public int ObrazekID { get; set; }
public string ObrazekCesta { get; set; }
public string ObrazekPopis { get; set; }
public ICollection<Odstavec> Odstavce { get; set; }
}
K zpřístupnění ostatních modelů musíš do metody Details v ClanekController includovat ostatní modely pomocí
.Include(i => i.Obsahy)
.Include(i => i.Obrazky)
.FirstOrDefaultAsync(i => i.ClanekID == id);
Dík, ja nevedel že už prešli na 3.1 ... Čo sa týka môjho problému snažím sa nájsť free JS text editor čo by dokázal takéto základné operácie ako nadpis, tučný text, atd a vracal to v niakom vhodnom formáte stringu. Ten bych potom prehnal cez niaky môj parser, roztriedil na elementy a vyskladal na stránke. Alebo poprípade mnet seriu predpripravenych šablón ktoré bude user iba vypĺňať. Každopádne dik za radu, nečakal sem že to bude až taký problém. Nevedel by si náhodou o niakom vhodnom editor?
Aha, jasný, to jsem ti zapomněl napsal. Zkus TinyMCE. Je hodně rozšířený a free.
Hlavně pak pozor, až budeš vypisovat data do zobrazení, tak musíš použít
@Html.Raw()
Jinak ti to nepřevede HTML
Uff, to vyzerá dobre. Nemôžem to teraz bližšie skúmať, tak sa ešte
spýtam, out toho je v html? Dá sa to potom uložiť ako string a následne len
zobraziť cez @Html??? To by bylo presne to čo hľadám!
Ano, uloží se html a html.raw to pak přeloží na stylovaný text.
Zobrazeno 10 zpráv z 10.