c# - 为什么这个文本字段可以正确发送数据,但它被接收为 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>
}
解决方案
查看图标,Genre_Id 成员看起来不同。那是因为它是一个字段,而不是一个属性。
MVC 要求模型成员是属性。添加{ get; set; }
到它的声明中。
推荐阅读
- angular - 在 observable 中调用返回另一个 observable 的方法时出错
- javascript - 正则表达式/ JavaScript:将字符串拆分为每行最大字符分隔行,并向后查找 n 个字符以查找可能的空格?
- node.js - 将 Azure 自定义视觉模型与 Node.js 结合使用
- ruby-on-rails - 在rails postgresql中转换数据类型时的注意事项
- filenet-p8 - 如何为文件网中的组提供 create_instance 访问权限?
- python-3.x - 我应该如何对不同方向的图像进行分类?
- sql - Oracle DB,使用“,”分隔符连接 1 列中的所有值
- node.js - 使用 ExpressJS 框架将 MongoDB 脚本转换为 NodeJS 脚本
- amazon-web-services - 由于存在大写字母,子域在迁移后无法正常工作
- unity3d - 图像大小独立着色器