IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
ratpile
Člen
Avatar
ratpile:16.5.2016 22:22

Ahoj, nedává mi spát jedna vlastnost asp.net, respektive netuším, jestli není pouze v mé hlavě.
Nastíním o co jde.

Mám GET metodu, např:

action result Create (int id)
{
var findSomething = _db.Things1.Find(id);
...
...
return view(findSomething);
}

POST metod navazující:

[httpPost]
action result Create (int id, Thing1 thing)
{

int  showThing1ID = thing.ID;
...
...

}

jak je prosím možné, že ASP vratí výsledek toho stringu korektně? :O

get metoda vytvoří formulář pro novou entitu v modelu
post metoda jí nějak automaticky přejímá nebo jak je možné, že Thing1 thing není jen prázdným předpisem třídy? POST metoda

konkrétnější záhada :

public ActionResult CreateUserReview(AspNetUsers aspUser, Games game, Reviews review)
      {
          if (ModelState.IsValid)
          {
           review.Game_Id = game.Id;
           }

jak je možné toto? jak je možný že review.game_id získá id správné hry, když jí má jen jako parametr, funguje snad nějaká kaskáda, kde si jednotlivý "hlubší" routy předávaj tu hru ke který patří ? :(

díky, byť to asi nezní příliš pochopitelně

Editováno 16.5.2016 22:25
 
Odpovědět
16.5.2016 22:22
Avatar
ratpile
Člen
Avatar
ratpile:16.5.2016 22:27

Pokud mám :

Hru > Detail hry > v něm zanořený Komentář hry > v komentáři zanořený Edit komentáře

tak každé "zanoření" si nějak předává automaticky Hru ke které patří ?

 
Nahoru Odpovědět
16.5.2016 22:27
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na ratpile
vajkuba1234:16.5.2016 23:34

Nevim zda jsem to pochopil spravne, ale kdyz odesilas formular (POST z strongly typed view), tak ten objekt odesilas kontroleru do metody post a tam s tim muzes pracovat.

Nahoru Odpovědět
16.5.2016 23:34
No hope, no future, JUST WAR!
Avatar
Robert Poč
Člen
Avatar
Robert Poč:17.5.2016 12:50

O správné předání parametrů se stará routování
https://www.miroslavholec.cz/…routing-uvod

 
Nahoru Odpovědět
17.5.2016 12:50
Avatar
ratpile
Člen
Avatar
ratpile:17.5.2016 18:19

takže, pokud mám dvě tabulky (třídy) kde jedna je cizím klíčem u druhé, například ČLÁNEK a KOMENTÁŘ

článek obsahuje komentáře..

a pokud já teda dojdu na konkrétné článek a chci u něj udělat třeba edit metodu nějakou..
jsem na routu KONTROLER1/cla­nek/detail/1 - OK, rozumim proč vím na jakém článku jsem, id se prostě někde spáruje s formulářem

jak je ale možný, že pokud se skrze ten detail proklikám do editu toho komentáře, někam na
adresu KONTROLER1/edi­tuj/idKomenta­re , že pokud mám v parametru metody pro editaci Clanek clanek,
tak ta metoda ví, na jakém Id článku zrovna jsem

jak je to možný?

jak můžu na žákladě parametru ActionResult Edit (Clanek clanek)

získat clanek.Id.. když se vlastně vůbec na žádný hře (dle url) nenacházim

 
Nahoru Odpovědět
17.5.2016 18:19
Avatar
ratpile
Člen
Avatar
ratpile:17.5.2016 18:25

*

[HttpPost]
        [ValidateAntiForgeryToken]
        [Authorize]
        public ActionResult CreateUserReview(AspNetUsers aspUser, Games game, Reviews review)
        {
            if (ModelState.IsValid)
            {


                review.Game_Id =** game.Id;**

                review.User_Id = User.Identity.GetUserId();
                review.Created_At = DateTime.Now;
                _entitiesUser.Reviews.Add(review);
                _entitiesUser.SaveChanges();**

jak je možný že proběhne správně tohle?
review.Game_Id =** game.Id;**

game by měl být jen prázdný parametr pro budoucí naplnění typem Games, jaktože zná Id hry? :-D

 
Nahoru Odpovědět
17.5.2016 18:25
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na ratpile
vajkuba1234:17.5.2016 20:55

Ty ve View naplnis objekt "game" vlastnostmi pomoci formulare a nasledne ten objekt posles z GET metody CreateUserReview do POST metody CreateUserReview, metoda prijme nekolik parametru, kde konkretne Games game obsahuje vlastnosti (naplnene pole) z View.

Nahoru Odpovědět
17.5.2016 20:55
No hope, no future, JUST WAR!
Avatar
ratpile
Člen
Avatar
Odpovídá na vajkuba1234
ratpile:17.5.2016 21:09

nenene, to se právě nechápeme

game je instance třída Games
review je instance třídy Review

mě zkrátka v kodu funguje to, že mi typová create metoda třídy Review automaticky ví ke které instanci Games patří a je mi záhadou proč

já zkráttka dojdu na detail Games a na něm chci editovat komentář třídy Review..

mas
GameId
GameName
Game..blabla

a pak
ReviewID
ReviewGameId (cizí klíč)

a jediný co mě napadá, pak to, že pokud znám konkrétní review, pak zároveň znám review.gameId (aneb ke které hře patří)

jen nevím jak se tahle spojitost automaticky přenese do public ActionResult CreateUserRevi­ew(AspNetUsers aspUser, Games game, Reviews review)¨

jak je zkrázka možný že Games game parametr není NULL ale obsahuje v sobě korektní hru

Editováno 17.5.2016 21:10
 
Nahoru Odpovědět
17.5.2016 21:09
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na ratpile
vajkuba1234:17.5.2016 21:35

Vzdyt ti to pisu, kdyz odesles formular, tak ID, Name, Blabla, je ulozeno v game jako vlastnost, takze k tomu muzes pristupovat game.GameId, game.GameName, atd...

Pokud hledas jak funguje binding, tak se podivej zde:

http://www.dotnetportal.cz/clanek/8479/asp-mvc-from-zero-to-hero-4-MVC-architektura-view-viewmodel-controller-razor

A pokud jsem se ani tentokrate netrefil, tak nechapu dotaz. :)

Nahoru Odpovědět
17.5.2016 21:35
No hope, no future, JUST WAR!
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 9 zpráv z 9.