ASP.NET MVC 3 Tutorial #4-Der Controller im Detail

Im Tutorial #2 habe ich einige Controller-Aktionen vorgestellt, bis dato jedoch noch keinen Quellcode im Controller gezeigt. Sehen wir uns zu allererst mal den HomeController an. Hier haben wir die Methode “Index”, welche auf den gleichnamigen View verweist. Außerdem geben wir dem View noch Daten mit. Dies kann man über mehrere Möglichkeiten erreichen. In unserem Beispiel verwenden wir ViewData. In einem späteren Post werde ich noch weitere Möglichkeiten vorstellen.

public ActionResult Index()
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";

return View();
}

Dies hat dann folgenden Output als Effekt:

AA1

Im Home-Controller befindet sich auch noch die Methode “About”. Hier wird ebenfalls wie in der Index-Methode “return View” angegeben. Diese Methode gibt jetzt einen View mit den Namen “About” zurück. Es ist auch möglich, andere Views anzugeben.

 public ActionResult About()
{
    return View();
}

Der View “About” ist im Ordner unter “Views/Home/” zu finden.

Will man einen anderen Controller aufrufen – in meinem Fall den Controller “ForceController” so wird auch hier der Default Route mit Index aufgerufen. Ein Aufruf von “/Force” landet demnach auf Index.

 public ActionResult Index()
{
    return View();
}

AA2

Asp.NET MVC stellt uns jedoch auch noch wesentlich mehr Möglichkeiten zur Verfügung, Daten zurückzugeben. Bis jetzt hatten wir immer “return View()” verwendet. Es ist jedoch auch möglich, einfachen Content zurückzugeben. Dies funktioniert mit “return Content”.

 public ActionResult HelloWorld()
{
    return Content("Hello World");
}

In diesem Fall wird der Content ausgegeben. Im Tutorial 2 habe ich auch auf Nullable Types als Parameter hingewiesen. Hierfür muss man dies nur in der Methode so definieren:

 public ActionResult GetSomeId(int? id)
{
    if (id.HasValue)
        return Content(string.Format("Hello Number {0}", id.Value));
    else
        return Content("No value specificed");
}

Wird die Methode ohne Parameter aufgerufen, so gibt diese “No value specified” zurück. Asp.NET MVC erlaubt es uns auch, auf andere Controller/Actions zu verlinken. Dies geschieht beispielsweise mit “RedirectToAction”. Wenn man sich ein standard-CRUD System vorstellt, so macht dies durchaus Sinn.

 public ActionResult NoWay()
{
    return RedirectToAction("Index");
}

In diesem Beispiel wird auf die Action Index am selben Controller verlinkt. Außerdem kann man beispielsweise sehr einfach ein Datum zurückgeben. Hierbei wird es in “Content” gewrappt. Today kann auch vom Controller aufgerufen werden.

 public DateTime Today()
{
    return DateTime.Now;
}

AA3

Besonders interessant ist jedoch die Möglichkeit, weiter Typen wie Dateien oder JSON zurück zu geben. Vor allem JSON eignet sich hervorragend für JScript/jQuery Interaktionen.

 public ActionResult JSONGoesToHell()
{
    return Json(new { Id = 1, Content = "Hello JSON" }, JsonRequestBehavior.AllowGet);
}

B1

Dies gibt folgendes aus:

B2

Im nächsten Post werden wir uns CustomRoutes mal ansehen und was die so alles schönes für uns machen können.