İçeriğe geç

Yeni Başlayanlar için MVC Örnekleri – 2

Bir önceki yazımda MVC tasarımının avantajları üzerine durmuştum ve basit bir fotoğraf galerisi uygulaması hazırlamıştım. Bu yazımda basit bir anket uygulaması hazırlıyor olacağız. İhtiyacımız olan veritabanımızı XML olarak belirleyeceğiz ve ihtiyacımız olan soru-cevap bilgilerini xml dosyası içinde saklayıp okuyacağız.

Anket Uygulaması

Anket uygulaması için basit anlamda ihtiyaçlarımızı belirleyecek olursak; öncelikle sorularımızı barındıracak olan bir nesneye ihtiyaç duyarız. Sonrasında bu sorulara ait olan cevapları barındıran nesnemiz olmalıdır ve her ikisini de barındıran bir anket nesnesine ihtiyaç duyarız. Bunları aşağıdaki gibi oluşturalım.

    public class Question
    {
        public int ID { set; get; }
        public string QuestionText { set; get; }
        public List<Answer> Answers { set; get; }
        [Required]
        public string SelectedAnswer { set; get; }
        public Question()
        {
            Answers = new List<Answer>();
        }
    }
    public class Answer
    {
        public int ID { set; get; }
        public string AnswerText { set; get; }
        public int SelectedCount { get; set; }
    }
    public class Survey
    {
        public List<Question> Questions { set; get; }
        public Survey()
        {
            Questions = new List<Question>();
        }
    }

Şimdide anket verilerimizi içinde barındıracak olan bir veri kaynağı hazırlamamız gerekiyor. Bunu xml olarak aşağıdaki gibi belirtebiliriz.

<rootSurvey>
  <Question Content="Gitmek istediğiniz ülke hangisidir?" Id="1">
    <Answer Id="1" Quantity="0">İtalya</Answer>
    <Answer Id="2" Quantity="7">Amerika</Answer>
    <Answer Id="3" Quantity="3">İngiltere</Answer>
    <Answer Id="4" Quantity="1">İspanya</Answer>
    <Answer Id="5" Quantity="1">İrlanda</Answer>
    <Answer Id="6" Quantity="0">Almanya</Answer>
  </Question>
</rootSurvey>

Şimdi anket verilerimizi okuyabileceğimiz ve güncelleyebileceğimiz bir model nesnesi oluşturmalıyız. Bu nesne içinde aşağıdaki sayacağım metotlar şimdilik yeterli olacaktır.
QuestionList (Anketleri çekebileceğimiz bir metot)
SelectedAnswer (Oy verilen cevabın değerini arttırmamızı sağlayacak olan metot)
AnswerView (anket sonuçlarını görmemizi sağlayacak olan metot)

Not: Saydığım metotlardaki ilgili kodlara ekteki dosyadan ulaşabilirsiniz.

Veriler üzerindeki işlemlerimizi tamamladıktan sonra ihtiyacımız olan 2 controller tanımlamamız gerekecek. İlki içinde soruları barındıracak olan controller ve ikincisi anket sonuçlarını görmemizi sağlayacak olan controller olacak.

Örnek olarak HomeController kodlarımız aşağıdaki gibi olacaktır.

    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            Survey _Survey = new SurveyModel().QuestionList();
            return View(_Survey);
        }

        [HttpPost]
        public ActionResult Index(Survey model)
        {
            Question currentQuestion = model.Questions.First();
            new SurveyModel().SelectedAnswer(currentQuestion.ID.ToString(), currentQuestion.SelectedAnswer);
            return RedirectToAction("Index", "SurveyResult");
        }
    }

Görüldüğü gibi içinde HttpPost niteliğine(attribute) sahip bir metot bulunmaktadır ve bu metot kullanıcının anketi cevaplaması esnasında devreye girerek ilgili cevabın değerinin artmasını sağlar.
Sonrasında RedirectToAction kodu ile anket sonuçlarını görebileceğimiz ekrana yönlenmekteyiz.

Controller işlemlerinden sonra bunlara ait view oluşturup tasarlamak kalıyor. Hazırladığımız anket uygulamasına şuradaki adresten ulaşabilirsiniz. Bu uygulamadan yola çıkarak daha gelişmiş bir anket uygulaması hazırlayabilirsiniz. Mutlu kodlamalar dilerim.

Tarih:MVC

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.