【问题标题】:How to see Data Annotations with MVC? [duplicate]如何使用 MVC 查看数据注释? [复制]
【发布时间】:2016-12-26 14:25:18
【问题描述】:

我有一个问题,我是 MVC 和 ASP.NET 的初学者,所以我正在尝试从书中做一些练习,但我没有发现错误。我创建了一个类,它的名字是Photo,我添加了一些Data Annotations,例如[DisplayName(Created Data)],现在我有了这个类:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;

namespace WebApplication2.Models
{
    public class Photo
    {
        public int PhotoID { get; set; }
        [DisplayName("Titolo")]
        [Required]
        public string Title { get; set; }
        public byte[] PhotoFile { get; set; }
        public string Description { get; set; }
        // [DisplayName("Data creazione")]
        // [DisplayFormat(DataFormatString = "{0:dd/mm/yy}", ApplyFormatInEditMode = true)]
        public DateTime CreateDate { get; set;  }
        // [DisplayName("Possessore")]
        public string Owner { get; set; }
        public virtual ICollection<Comment> Comments { get; set; }
    }
}

我的看法是:

<div id="photo-title">
    @Html.DisplayNameFor(model => model.Title)
    @Model.Title
</div>
<div>
    @Model.PhotoFile
</div>
<div>
    @Model.CreateDate
</div>

我收到model.Title 的错误,它是

表达式树可能不包含动态操作。

这是什么意思?我必须做些什么来解决我的问题,看到标题的名称才能在视图中使用注释?

【问题讨论】:

  • 你是如何在视图中声明模型的——应该是@model Photo

标签: asp.net-mvc


【解决方案1】:
@model WebApplication2.Models.Photo // model as strongly typed.


<div id="photo-title"> 
@model.Title
</div> 

【讨论】:

  • 谢谢,我解决了:@model WebApplication2.Models.Photo 谢谢大家!
  • 如果正确请标记为答案
【解决方案2】:

您的视图是无类型,因此您的视图默认为动态。你必须让你的视图/模型强类型

您可以通过简单地添加:

@model WebApplication2.Models.Photo // at the top of your view.

确保它确实是@model Photo 而不是@Model Photo,因为这种错误很常见。

【讨论】:

  • 是的,我是在你回答之后才这样做的,我之前没有收到错误,但是我收到有关 Photo 的错误,“它说类型或名称空间 Photo 已找到。可能我错过了对程序集的使用或引用。我应该在哪里添加它?Photo 类在命名空间中:WebApplication2.Models。
  • @Marchin,只需使用完全限定名称 - @model WebApplication2.Models.Photo
  • 使用系统;使用 System.Collections.Generic;使用 System.Linq;使用 System.Web;使用 System.Web.Mvc; namespace WebApplication2.Controllers { public class HomeController : Controller { // GET: Home public ActionResult Index() { Models.Photo newPhoto = new Models.Photo(); newPhoto.Title = "这是一张示例照片"; newPhoto.Owner = User.Identity.Name; newPhoto.CreateDate = DateTime.Today;返回视图(“索引”,新照片); } } }
  • @Marchin 我已经编辑了我的答案
  • @Marchin 对不起,我不需要你的控制器,你只需要添加你的 Assembly Name.Models.Photo,这样你的视图就知道从哪里获取显示所需的信息
猜你喜欢
  • 1970-01-01
  • 2011-03-06
  • 1970-01-01
  • 1970-01-01
  • 2022-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多