首页 > 解决方案 > 为什么这个文本字段可以正确发送数据,但它被接收为 Null 并且 Visual Studio 引发异常?

问题描述

我将数据从视图发送到操作。Chrome 浏览器显示Genre_Id 已正确发送,因为您看到了附加的屏幕截图,但是当操作收到它时,Visual Studio 会引发异常并将其显示为Null / 0,因为您看到了附加的屏幕截图。那么为什么会这样呢?

在此处输入图像描述

在此处输入图像描述

这是电影模特

 public class Movie
{
    public int Id { get; set; }

    [Required]
    [StringLength(255)]
    public string Name { get; set; }

    [Required]
    [Display(Name="Created on")]
    public DateTime DateAdded { get; set; }

    [Required]
    [Display(Name = "Release Date")]
    public DateTime ReleaseDate { get; set; }

    [Required]
    [Display(Name = "Number in Stock")]
    public int NumberInStock { get; set; }

    public Genre Genre { get; set; }

    [Display(Name="Genre")]
    public int Genre_Id;

}

这是表格

@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"})
</div>
<div class="form-group">
    @Html.LabelFor(m => m.Movie.DateAdded)
    @Html.TextBoxFor(m => m.Movie.DateAdded, new { @class="form-control"})
</div>
<div class="form-group">
    @Html.LabelFor(m => m.Movie.ReleaseDate)
    @Html.TextBoxFor(m => m.Movie.ReleaseDate, new { @class="form-control"})
</div>
<div class="form-group">
    @Html.LabelFor(m => m.Movie.NumberInStock)
    @Html.TextBoxFor(m => m.Movie.NumberInStock, new { @class="form-control" })
</div>
<div class="form-group">
    @Html.LabelFor(m => m.Movie.Genre_Id)
    @Html.TextBoxFor(m => m.Movie.Genre_Id, new { @class="form-control"})
</div>
@Html.HiddenFor(m => m.Movie.Id)
<button  type="submit" class="btn btn-primary">Save</button>
}

标签: c#asp.netasp.net-mvcentity-frameworkmodel-binding

解决方案


查看图标,Genre_Id 成员看起来不同。那是因为它是一个字段,而不是一个属性。

MVC 要求模型成员是属性。添加{ get; set; }到它的声明中。


推荐阅读