S
S
Sergey Melnikov2017-10-09 19:31:48
ASP.NET
Sergey Melnikov, 2017-10-09 19:31:48

Why is there no class instantiation in ASP MVC C# when adding an entry?

There is a code

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

[HttpPost]
public ActionResult Create(Movie newMovie)
{

    if (ModelState.IsValid)
    {
        db.AddToMovies(newMovie);
        db.SaveChanges();

        return RedirectToAction("Index");
    }
    else
    {
        return View(newMovie);
    }
}

Why is there no class instantiation, as for example here:
1) https://professorweb.ru/my/ASP_NET/mvc/level7/7_1.php Binding complex types
using System;
using System.Linq;
using System.Collections.Generic;
using System.Web.Mvc;
using MvcModels.Models;

namespace MvcModels.Controllers
{
    public class HomeController : Controller
    {
        // ...

        public ActionResult CreateUser()
        {
            return View(new User());
        }

        [HttpPost]
        public ActionResult CreateUser(User model)
        {
            return View("Index", model);
        }
    }
}

2) as in php(yii2) for example
<?php

namespace app\controllers;

use Yii;
use yii\web\Controller;
use app\models\EntryForm;

class SiteController extends Controller
{
    // ...existing code...

    public function actionEntry()
    {
        $model = new EntryForm();

        if ($model->load(Yii::$app->request->post()) && $model->validate()) {
            // valid data received in $model

            // do something meaningful here about $model ...

            return $this->render('entry-confirm', ['model' => $model]);
        } else {
            // either the page is initially displayed or there is some validation error
            return $this->render('entry', ['model' => $model]);
        }
    }
}

Answer the question

In order to leave comments, you need to log in

1 answer(s)
S
Stanislav Silin, 2017-10-09
@azazel_live

public ActionResult Create()
{
    // Создавать здесь новый инстанс безполезно, поскольку мы сразу же уходим в рендер
    return View();
}

[HttpPost]
// Новый инстанс класса Movie будет создан перед вызовом этого метода автоматически
public ActionResult Create(Movie newMovie)
{
    // Здесь вы узнаете все ли поля правильно замаплены
    if (ModelState.IsValid)
    {
        db.AddToMovies(newMovie);
        db.SaveChanges();
    // Если все верно идем дальше
        return RedirectToAction("Index");
    }
    else
    {
    // Если есть ошибки, то открываем заново, но с предедыдущими данными
        return View(newMovie);
    }
}

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question