Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C# ja mvc

runeberg [09.03.2012 17:42:22]

#

Hellurei.

Oon tässä pyöritellyt ajatusta, että kodailisi jonkun pikku projektin c# mvc "tyylillä". En vaan löydä parasta mahdollista lähestymistapaa toteutukselle, vaikka oon yrittänyt netistä selata esimerkkejä. Php Zend frameworkilla paljon koodaillu, joten sen logiikka on lähellä sydäntä (vaikkakin ilmeisesti kaikki mvc frameworkit taitaa toimia samalla logiikalla)

Model toteutus on melko selkeä, mutta miten olisi järkevää "sitoa" view ja controlleri toisiinsa? Zendihän toimii esim. näin:

controller

public function indexAction()
    {
        $form = new Application_Form_Login();
        $this->view->form = $form;
     }

view

<?php echo $this->form; ?>

Eli molemmat "tuntee" toisensa, viewi toki voisi periä controllerin, mutta samaan aikaan toki controlleri ei voi periä viewiä. Näiden päälle tarvisi rakentaa jonkinlainen pääluokka jota molemmat perisi ja juurikin sen järkevä toteutus mietityttää.

Osaan kyllä toteuttaa siten, kaikki kulkee osoittimissa sun muissa, mutta haluaisin että kaikki olisi mahdollisimman automaagista ja viewien ja controllerien lisäily olisi mahdollisimman helppoa..

Parinvuoden c# koodaustauon jälkeen mulla taitaa olla vaan väärä lähestymistapa

Grez [09.03.2012 20:35:50]

#

http://www.asp.net/mvc

Näkisin, että Model on se luokka, jonka sekä View että Controller näkevät. En keksi miksi niiden pitäisi "periä" toisensa.

Jos sulla on vaikka näkymä, jonka nimi on Runeberg ja olet tehnyt vaikka mallin RunebergModel, niin tyypillisesti se voisi mennä cotrollerissa esim:

public ActionResult Runeberg(Models.RunerbergModel model) {
    //Tehdään temput

    return View(model);
}

Eli kun ei määritellä erikseen mitä viewtä käytetään, niin tuo hakisi View:n nimeltä Runeberg (siis saman nimisen View:n kuin mikä funktion nimi on).

Ja View taas voi olla vahvasti tyypitetty tuolle RunebergModel mallille

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Projektisi.Models.RunebergModel>" %>

Eli tyypillisest View-sivut toteuttaa luokan System.Web.Mvc.ViewPage, jonka geneeriseksi tyypiksi määritellään haluttu malli.

Ja Visual Studio tekee noita rimpsuja puoliautomaattisesti kun vaan kerrot että haluat lisätä uuden näkymän.

runeberg [10.03.2012 21:08:26]

#

Okei, kiitoksia tämä selventää jonkin verran. Hiukan joutuu vielä sulattelemaan, mutta oikeassa suunnassa ollaan jo. Sivuhuomiona mainitsen että käytän xna fw koska haluan opiskella samalla sitäkin. Järkeähän mvc mallin toteutuksessa tässä ympäristössä ei välttämättä ole, mutta menkööt se samalla.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta