MVC forskelligt view afhængigt at input

Tags:    mvc asp.net

Hejsa allesammen

Jeg har nu begyndt at tænke lidt mere over nogle forskellige ting med noget af det jeg skal kaste mig ud i på et tidspunkt.
Det er fx at jeg gerne vil have at min Controller har en action som er pretty standart, men næste skridt er så at tage input og levere et helt andet view.

Fx Personer/Single/
skulle give et view der viser en introduktion til Single-kategorien - altså som er mere statisk og som ikke skal vise en masse dynamisk.
Dette svarer til:
Fold kodeboks ind/udCSharp kode 

Det er ikke så svært at lave, og i mit tilfælde ville jeg måske have et mere statisk view som ikke skal ændre sig.
Men hvis jeg nu ville videre fra dette view til noget mere specifikt - altså nogle underkategorier så kunne jeg lave:
Fold kodeboks ind/udCSharp kode 

Jeg vil lave SinglePerson som nullable med "?", men mit problem bliver når jeg egentligt vil have et standart view til Single der er en introduktion, men når jeg kalder Single med input skal der komme et helt andet view.

Hvordan kan det lige gøres?

Min opbygning og markup på de to forskellige views vil være helt forskellige, så er det muligt på en måde at kunne lave begge dele?
Eller skal jeg i min Action "redirekte" til et andet view hvis "SinglePerson? single" er null, så jeg kan lave et andet view sådan?

Håber i kan hjælpe mig :)



2 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Hejsa allesammen

Jeg har nu begyndt at tænke lidt mere over nogle forskellige ting med noget af det jeg skal kaste mig ud i på et tidspunkt.
Det er fx at jeg gerne vil have at min Controller har en action som er pretty standart, men næste skridt er så at tage input og levere et helt andet view.

Fx Personer/Single/
skulle give et view der viser en introduktion til Single-kategorien - altså som er mere statisk og som ikke skal vise en masse dynamisk.
Dette svarer til:
Fold kodeboks ind/udCSharp kode 

Det er ikke så svært at lave, og i mit tilfælde ville jeg måske have et mere statisk view som ikke skal ændre sig.
Men hvis jeg nu ville videre fra dette view til noget mere specifikt - altså nogle underkategorier så kunne jeg lave:
Fold kodeboks ind/udCSharp kode 

Jeg vil lave SinglePerson som nullable med "?", men mit problem bliver når jeg egentligt vil have et standart view til Single der er en introduktion, men når jeg kalder Single med input skal der komme et helt andet view.

Hvordan kan det lige gøres?

Min opbygning og markup på de to forskellige views vil være helt forskellige, så er det muligt på en måde at kunne lave begge dele?
Eller skal jeg i min Action "redirekte" til et andet view hvis "SinglePerson? single" er null, så jeg kan lave et andet view sådan?

Håber i kan hjælpe mig :)


Jeg går ud fra du kan lave en overloaded metode der hedder det samme, den tager bare imod et SinglePerson object. Eksempel:

Fold kodeboks ind/udCSharp kode 


Det er compilet, men ikke testet i en browser.



Indlæg senest redigeret d. 13.07.2012 11:13 af Bruger #6559
Har fundet en løsning så læs længere nede.

Jeg får en fejl nu når jeg afvikler den, hvilket var hvad jeg var bange for :(

The current request for action 'Show' on controller type 'MinController' is ambiguous between the following action methods:
System.Web.Mvc.ActionResult Show() on type Testproject.Controllers.MinController
System.Web.Mvc.ActionResult Show(SinglePerson) on type Testproject.Controllers.MinController

Derfor jeg ville have at det skulle indlægges i samme action.

Tror jeg har fundet en løsning, men det er uden rigtigt at teste det med ovenstående så det er meget simpelt. Men vil da lige dele det med jer andre, og når jeg endeligt får det løst så kan det være jeg fikser eksempelet herunder.

1) Højreklikkede på View og sagde Add new view. Døbte dette "EmptyViewForTheTest".

2) Jeg tilføjede "string isthisinput" som input i metoden
Fold kodeboks ind/udCSharp kode 


3) Kom i tanke om at default er det id, så gik ind i global.asax og lavede en ny route og udkommenterede den default:
Fold kodeboks ind/udCSharp kode 


Nu kan jeg få den til at vise "EmptyViewForTheTest" når jeg starter, og hvis jeg tilføjer "/HelloThere", så kommer jeg til mit andet "gamle" view jeg havde. Det er fedt!



Indlæg senest redigeret d. 15.07.2012 19:34 af Bruger #17215
t