Почему в ASP MVC C# нет создания экземпляра класса при добавлении записи?

Есть код
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);
    }
}


Почему нет создания экземпляра класса, как например здесь:
1) https://professorweb.ru/my/ASP_NET/mvc/level7/7_1.php Привязка сложных типов
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) как в php(yii2) например
<?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]);
        }
    }
}
  • Вопрос задан
  • 211 просмотров
Решения вопроса 1
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);
    }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы