我在 ASP.NET MVC 4 中工作,但我遇到的问题是我的模型验证无法正常工作。出于某种原因,并非我所有的必填字段都必须填写。
这是我的模型:
public class MovieModel
    {
        public int Id { get; set; }
        [Required]
        public string Name { get; set; }
        public DateTime ReleaseDate { get; set; }
        [Required]
        public string Genre { get; set; }
        [Required]
        public decimal Price { get; set; }
        public virtual ICollection<RoleInMovie> RoleInMovie { get; set; }
    }
这是视图:
@using (Html.BeginForm())
{
    <table>
        <tr>
            <td>
                <label>Name:</label></td>
            <td>@Html.EditorFor(m => m.Name)</td>
            <td>@Html.ValidationMessageFor(m => m.Name)</td>
        </tr>
        <tr>
            <td>
                <label>Genre:</label></td>
            <td>@Html.EditorFor(m => m.Genre)</td>
            <td>@Html.ValidationMessageFor(m => m.Genre)</td>
        </tr>
        <tr>
            <td>
                <label>Price:</label></td>
            <td>@Html.EditorFor(m => m.Price)</td>
            <td>@Html.ValidationMessageFor(m => m.Price)</td>
        </tr>
    </table>
    <button type="submit">Submit</button>
}
这是我的行动:
[HttpPost]
        public ActionResult Add(MovieModel model)
        {
            if(ModelState.IsValid)
            {
                return RedirectToAction("Index");
            }
            return View();
        }
现在事情是这样的:只要我只输入一个价格,modelstate.isvalid 就会变为 true。当悬停在我的模型上时,它说名称和流派都是空的。当然,它们是必需的,但验证不起作用。此外,validationmessagefor 仅适用于价格。
我希望我没有忽略一些太荒谬的事情。谢谢您的帮助!