加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 来自EDMX文件的MVC模型 – 为其添加自定义注释,

发布时间:2020-12-16 03:41:40 所属栏目:asp.Net 来源:网络整理
导读:如何从我的Model.edmx文件生成的模型中的类或类方法中添加注释/属性?我问这个的原因是因为每次我向类Mo??del.Designer.cs添加注释时,当我通过设计器更改我的Model.edmx文件时,这个注释就会消失. 更具体地说,我正在寻找一种方法将AllowHtml注释添加到我的一
如何从我的Model.edmx文件生成的模型中的类或类方法中添加注释/属性?我问这个的原因是因为每次我向类Mo??del.Designer.cs添加注释时,当我通过设计器更改我的Model.edmx文件时,这个注释就会消失.

更具体地说,我正在寻找一种方法将AllowHtml注释添加到我的一个模型类中的特定属性,并使其保持在那里,即使在模型设计器视图中搞乱它.

这是控制器代码. Segment类的Content属性是导致我的控制器在填充HTML时崩溃的属性.

[FacebookAuthorize(Permissions = AuthenticationController.ExtendedPermissions,LoginUrl = "/Authentication/LogOn?ReturnUrl=~/Segment/Contribute")]
    [HttpPost]
    [ValidateInput(false)]
    public ActionResult Contribute(int id,string content)
    {

        var container = new ModelContainer();

        var parent = container.SegmentSet.SingleOrDefault(s => s.Id == id);

        var segment = new Segment();
        segment.Content = content; //this crashes with HTML data.
        segment.Owner = AuthenticationController.Authentication.GetUser(container);
        segment.TimeModified = DateTime.UtcNow;
        segment.TimePosted = DateTime.UtcNow;

        container.AddToSegmentSet(segment);

        if (!parent.Children.Contains(segment))
        {
            parent.Children.Add(segment);
            segment.Parent = parent;
        }

        container.SaveChanges();

        return RedirectToAction("Index","Home");
    }

解决方法

您可以使用MetadataTypeAttribute来扩展您的类:

[MetadataType(typeof(MyEdmxClassExtension))]
public partial class MyEdmxClass { }

public class MyEdmxClassExension
{
    [AllowHtml] // Add the attributes you want to find on your property
    public string ThePropertyYouWantToExtend { get; set; }
}

当然,此代码与生成的文件不同,或者您将丢失它.

编辑

在回应下面的评论时,我认为你有两个问题.使用MetadataTypeAttribute回答您的原始问题,对于第二个问题,您应该打开另一个问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读