Witam, miałem za zadanie zrobić prostą aplikację webową która miała wypisywać odpowiednie komunikaty, zależne od wartości wprowadzonej w formularzu. Instrukcje warunkowe które sprawdzają co trzeba wypisać napisałem w kontrolerze, lecz dowiedziałem się że "logikę" pisze się w modelu. Czy to prawda? Jeśli tak, to w jaki sposób mam w modelu sprawdzać co wypisać?
Index.cshtml
@model Zadanie1CEZ.Models.Wartosc
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
@using (Html.BeginForm())
{
<p>Podaj liczbę: @Html.TextBoxFor(x => x.tekst)</p>
<input type="submit" value="Wyślij liczbę" />
}
</body>
</html>
Wartosc.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Zadanie1CEZ.Models
{
public class Wartosc
{
public string tekst { get; set; }
}
}
FizzBuzzControler.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Zadanie1CEZ.Models;
namespace Zadanie1CEZ.Controllers
{
public class FizzBuzzController : Controller
{
[HttpGet]
public IActionResult Index()
{
return View();
}
[HttpPost]
public string Index(Wartosc wartosc)
{
if (Convert.ToInt32(wartosc.tekst) > 100 || Convert.ToInt32(wartosc.tekst) < 1)
{
return "Liczba nie jest z określonego przedziału, czyli <1,100>";
}
if ((Convert.ToInt32(wartosc.tekst) % 3) == 0 && (Convert.ToInt32(wartosc.tekst) % 5) == 0)
{
return "FizzBuzz";
}
if ((Convert.ToInt32(wartosc.tekst) % 3) == 0)
{
return "Fizz";
}
if ((Convert.ToInt32(wartosc.tekst) % 5) == 0)
{
return "Buzz";
}
return wartosc.tekst + " (Czyli niepodzielna ani przez 3 ani 5)";
}
}
}