【问题标题】:MVC 5 data annotations not scaffoldingMVC 5 数据注释不是脚手架
【发布时间】:2015-04-16 17:09:06
【问题描述】:

我使用 Code First From A Database 创建了一个 MVC 项目。我在我的模型类中添加了数据注释,例如[DisplayName("裁决请求 ID")] 和 [ScaffoldColumn(false)]。

我选择了使用实体框架添加带有视图的 MVC 5 控制器,选择了我的模型类、数据上下文类,并选中了生成视图、引用脚本库和使用布局页面。所有文件和文件夹均已正确添加。

我的问题在我运行应用程序时出现。索引、详细信息和编辑视图都显示我的长属性名称,而不是我使用 DisplayName 数据注释为属性提供的名称。另外,我声明为 ScaffoldColumn(false) 的属性出现在所有 3 个视图中。

我正在粘贴以下模型类之一的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.Spatial;
using System.ComponentModel;


[Table("RulingRequest")]
public partial class RulingRequest
{

[DatabaseGenerated(DatabaseGeneratedOption.None)]
[DisplayName("Ruling Request ID")]
public int RulingRequestID { get; set; }

[StringLength(9)]
[ScaffoldColumn(false)]
public string CreatedBy { get; set; }

[DisplayName("Ruling Request Group ID")]
[StringLength(3)]
public string RulingRequestGroupID { get; set; }  //FK

[DisplayName("Type")]
public int? RulingRequestTypeID { get; set; }  //FK

[StringLength(50)]
[DisplayName("First Name")]
public string FirstName { get; set; }

我是新手,已经在网上搜索过帮助,但我没有遇到与我类似的情况。

【问题讨论】:

  • 发表观点之一
  • 停止在视图中使用数据模型并开始使用视图模型。 What is a View Model in MVC
  • 我尝试添加其中一个视图的图像,但在尝试保存我编辑的问题时出错 - 您必须拥有至少 10 的声誉才能发布图像。

标签: asp.net-mvc entity-framework


【解决方案1】:

试试这个:[Display(Name = "Ruling Request ID")]

也可以试试这个来防止绑定:

[Bind(Exclude = "CreatedBy")]
public partial class RulingRequest
{

【讨论】:

  • 我试过 [Display(Name = "Ring Request ID")],但没有成功。不过谢谢你的主意!奇怪的是我的 [ScaffoldColumn(false)] 现在正在工作。
  • 应该可以。那么问题不在于注释。确保在您的页面上启用了不显眼的 java
  • 我通过 Scripts.Render 将 jquery.validate 和 jquery.validate.unobtrusive 添加到 BundleConfig 和共享视图 _Layout.cshtml。我检查了详细信息网页源代码,并显示了两个脚本。奇怪的是,我的一些属性正在显示我所拥有的显示名称,例如名字、姓氏、地址 2、决定日期等...感谢您的 cmets,因为我没有将这 2 个脚本添加到 Scripts.Render 函数中。
  • 所以注释适用于除 rulerequestID 之外的所有其他属性?
  • 到目前为止,所有注释都正常工作。您的 cmets 为我提供了为什么我的大多数注释没有正确显示的答案。为了让外键正确显示,我必须在这些模型类文件中添加注释。
【解决方案2】:

我建议首先检查您是否以正确的顺序包含了必要的 javascript 文件以进行不显眼的验证,这将使验证在客户端成功进行。 检查给出的答案here

【讨论】:

  • 我在 BundleConfig.cs 中添加了 jquery.validate 和 jquery.validate.unobtrusive。
  • 还将它们添加到@Scripts.Render 语句中的共享_Layout 视图中。
【解决方案3】:

在创建视图之前,您必须将 ScaffoldColumnAttribute 提供给模型属性。脚手架不会为该特定属性和任何其他属性创建 DisplayFor/EditFor。如果您在创建后提供属性,属性仍将显示在表单中,因为已经为该模型属性创建了 DisplayFor/EditFor Html Helper。

【讨论】:

    猜你喜欢
    • 2014-10-01
    • 2018-12-29
    • 1970-01-01
    • 2014-12-21
    • 2011-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多