【发布时间】:2021-07-23 21:08:47
【问题描述】:
我在Movie 类中添加了验证,然后我在MoviesController 中更改了程序流程,并在.cshtml 中添加了验证消息,但是当我运行我的应用程序时,没有显示验证消息。
[HttpPost]
public ActionResult Save(Movie movie)
{
if (ModelState.IsValid)
{
if (movie.Id == 0)
{
movie.DateAdded = DateTime.Now;
_context.Movies.Add(movie);
}
else
{
var movieInDb = _context.Movies.Single(m => m.Id == movie.Id);
movieInDb.Name = movie.Name;
movieInDb.NumberInStock = movie.NumberInStock;
movieInDb.ReleaseDate = movieInDb.ReleaseDate;
movieInDb.GenreId = movie.GenreId;
_context.Entry(movieInDb).State = EntityState.Modified;
_context.SaveChanges();
return RedirectToAction("Index", "Movies");
}
_context.SaveChanges();
return RedirectToAction("Index", "Movies");
}
var viewModel = new NewMovieViewModel
{
Genres = _context.Genres.ToList(),
Movie = movie
};
return RedirectToAction("New", viewModel);
}
这是MoviesController 中的方法,我在其中更改了程序的流程。
Movie 类和验证
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;
namespace Vidly.Models
{
public class Movie
{
public int Id { get; set; }
[Required]
[StringLength(255)]
public string Name { get; set; }
public Genre Genre { get; set; }
[Display(Name = "Genre")]
[Required]
public byte GenreId { get; set; }
[Display(Name = "Release date")]
[Required]
public DateTime ReleaseDate { get; set; }
public DateTime DateAdded { get; set; }
[Display(Name = "Number in stock")]
[Required]
[Range(1,20)]
public int NumberInStock { get; set; }
}
}
最后New.cshtml
@model Vidly.VIewModels.NewMovieViewModel
@{
ViewBag.Title = "Details";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@{
if (Model.Movie != null)
{
<h2>Edit Movie</h2>
}
else
{
<h2>New Movie</h2>
}
}
@using (Html.BeginForm("Save", "Movies"))
{
<div class="form-group">
@Html.LabelFor(m => m.Movie.Name)
@Html.TextBoxFor(m => m.Movie.Name, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.Movie.Name)
</div>
<div class="form-group">
@Html.LabelFor(m => m.Movie.ReleaseDate)
@Html.TextBoxFor(m => m.Movie.ReleaseDate, "{0:d MMM yyyy}", new { @class = "form-control" })
@Html.ValidationMessageFor(m=> m.Movie.ReleaseDate)
</div>
<div class="form-group">
@Html.LabelFor(m => m.Movie.GenreId)
@Html.DropDownListFor(m => m.Movie.GenreId, new SelectList(Model.Genres, "Id", "Name"), "", new { @class = "form-control" })
@Html.ValidationMessageFor(m=> m.Movie.GenreId)
</div>
<div class="form-group">
@Html.LabelFor(m => m.Movie.NumberInStock)
@Html.TextBoxFor(m => m.Movie.NumberInStock, new { @class = "form-control" })
@Html.ValidationMessageFor(m=> m.Movie.NumberInStock)
</div>
<button type="submit" class="btn btn-primary">Save</button>
if(Model.Movie !=null){
@Html.HiddenFor(m => m.Movie.Id)
}
@Html.AntiForgeryToken()
}
【问题讨论】:
标签: c# asp.net-mvc entity-framework validation