Aktuálně: Postihly zákazy tvou profesi? Poptávka po ajťácích prudce roste, využij podzimní akce 30% výuky zdarma!
Pouze tento týden sleva až 80 % na e-learning týkající se JavaScript
JavaScript týden
Avatar
Pavel Kletečka:24.6.2019 18:46

Dobrý den,

snažím se v databázi uživatelů udělat stránku, která o nic zobrazí informace. Dostal jsem se do části kdy se dostanu na stránku př.: /Displayer/Info/1 (kde 1 je ID v databázi), ale nevím jak přenést tuto hodnotu z Controlleru do View metody a pak ji získat v příslušném html.

Zkusil jsem: Zkoušel jsem ViewBag, ale nic ten nefungoval. A jinak jsem nic jiného nenašel.

Chci docílit: Potřebuju aby můj cshtml kód dostal ID, aby podle něho mohl pak vyhledat přes funkci v databázi a zobrazit správného uživatele.

 
Odpovědět
24.6.2019 18:46
Avatar
Jaroslav Smrž
Redaktor
Avatar
Odpovídá na Pavel Kletečka
Jaroslav Smrž:24.6.2019 19:22

To je jednoduché. Stačí postavit SQL dotaz.

SELECT * FROM users WHERE user_id = ?, $id

Pokud potřebuješ poradit ohledně samotné MVC architektury, hodil by se zdrojový kód.

Nahoru Odpovědět
24.6.2019 19:22
/* Life runs on code */
Avatar
Odpovídá na Jaroslav Smrž
Pavel Kletečka:24.6.2019 19:24

Dobrý den,

SQL kód už mám napsaný teď jen potřebuji z tohoto:

// GET: Displayer/Info
public ActionResult Info(int id)
{
    return View();
}

získat id, tak abych ho pak mohl dát do cshtml:

public int id =
 
Nahoru Odpovědět
24.6.2019 19:24
Avatar
Jaroslav Smrž
Redaktor
Avatar
Odpovídá na Pavel Kletečka
Jaroslav Smrž:24.6.2019 19:31

Teď moc nechápu, jak to myslíš. Ale potřebuješ předat ten parametr do View. Vůbec nevím, jak máš napsaný model uživatele. Chtělo by to Model uživatele, alespoň tu metodu, která získává id uživatele a pak příslušný kontroler.

Nahoru Odpovědět
24.6.2019 19:31
/* Life runs on code */
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Odpovídá na Jaroslav Smrž
Pavel Kletečka:24.6.2019 19:33

Model jsem nepochopil k čemu má být, protože mám všechno info v databazi, ale jetli je potřeba, tak bych to prvně zkusil vymslet sám. Jen jsem doufal, že by to šlo bez toho. Omlouvám se pokud je to amaterská chyba, dostal jsem brigádu na c# a snažím se ještě volnočasově doučit cshtml.

 
Nahoru Odpovědět
24.6.2019 19:33
Avatar
Jaroslav Smrž
Redaktor
Avatar
Odpovídá na Pavel Kletečka
Jaroslav Smrž:24.6.2019 19:39

Aha, tak teď už je mi to jasné. MVC (Model, View, Controller) architektura bez modelu opravdu nefunguje. Doporučuji projít si místní tutoriály C#. NET Core nebo ASP .NET MVC

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět
24.6.2019 19:39
/* Life runs on code */
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:25.6.2019 8:20

Niz popisu php prikazy (neni to c#)
Mno, pokud tam mas databazi, tak nekde mas nejaky takovy kod (bez dalsiho info, prohlidnuti kodu se da realna situace jen tezko odhadnout, kazdy pise kod jinak):

$id = isset($_GET['id']) ? $_GET['id'] : ''; // ziskani id z prikazoveho radku

$result = sql("SELECT * FROM stranky WHERE stranka_id = ?", $id); // sql dotaz na db pro ziskani stranky
$row = sql_fetch($result); // zformatovani dat z sql do array $row

echo $row['text'];
echo $row['id']; // ziskani a vypsani id z SQL

No, takze, to, co chces, je tam v podstat uz na zacatku $id.

v htaccess mas nejspis nastavene prepisovani adresy z

/Displayer/Info/1 na
index.php?path=Displayer/Info/&id=1
// Nebo neco takoveho... Je to to same jako v html kodu mit
<a href="index.php?path=Displayer/Info/&id=1">odkaz</a> nebo
<form method=get action="index.php"><input name=path value="..."><input name=id value="1"></form>
// V php z toho ziskas id prave pomoci
$id = isset($_GET['id']) ? $_GET['id'] : '';

Mno, ale kdyby jsi to chtel ziskat primo v html, obejit server, v tomto pripade by to slo. Jenom bych to nevidel jako spravne reseni. myslim si, ze potrebujes spis ziskat na serveru id stranky a pak jej vypsat.
U uzivatele je mozne ziskat id pomoci javascriptu. Je to trochu slozitejsi, ale jde to.
google = javascript location
https://developer.mozilla.org/…API/Location

<script>
var str, arr;
str = location.pathname // "/Displayer/Info/1"
arr = str.split('/'); // rozdel retezec podle lomitek ["", "Displayer", "Info", "1"]
alert(arr[arr.length-1]) // ziskej posledni polozku pole "1"
</script>
Editováno 25.6.2019 8:20
 
Nahoru Odpovědět
25.6.2019 8:20
Avatar
Jaroslav Smrž
Redaktor
Avatar
Odpovídá na Peter Mlich
Jaroslav Smrž:25.6.2019 12:49

On měl špatně celou architekturu. Chtěl použít MVC a předat něco pohledu z kontroleru, ale kontroler to samozřejmě nemá kde vzít, když nemá žádný model. Navíc by měl použít ORM pro práci s databází a to je zase Entity Framework, kde se nepracuje s SQL. Celá jeho myšlenka získat id uživatele z URL byla tedy chybná.

Nahoru Odpovědět
25.6.2019 12:49
/* Life runs on code */
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.