Diskuze: ASP teorie

C# .NET .NET (C# a Visual Basic) ASP teorie American English version English version

Avatar
ratpile
Člen
Avatar
ratpile:

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. května 22:25
 
Odpovědět 16. května 22:22
Avatar
ratpile
Člen
Avatar
ratpile:

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. května 22:27
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na ratpile
vajkuba1234:

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. května 23:34
No hope, no future, JUST WAR! For world peace Israel must be DESTROYED!
Avatar
Robert Poč
Člen
Avatar
Robert Poč:

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

 
Nahoru Odpovědět 17. května 12:50
Avatar
ratpile
Člen
Avatar
ratpile:

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. května 18:19
Avatar
ratpile
Člen
Avatar
ratpile:

*

[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. května 18:25
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na ratpile
vajkuba1234:

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. května 20:55
No hope, no future, JUST WAR! For world peace Israel must be DESTROYED!
Avatar
ratpile
Člen
Avatar
Odpovídá na vajkuba1234
ratpile:

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. května 21:10
 
Nahoru Odpovědět 17. května 21:09
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na ratpile
vajkuba1234:

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  +1 17. května 21:35
No hope, no future, JUST WAR! For world peace Israel must be DESTROYED!
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.