Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc EDMX文件中的MVC模型-向其中添加自定义注释,并使其保持不变?_Asp.net Mvc - Fatal编程技术网

Asp.net mvc EDMX文件中的MVC模型-向其中添加自定义注释,并使其保持不变?

Asp.net mvc EDMX文件中的MVC模型-向其中添加自定义注释,并使其保持不变?,asp.net-mvc,Asp.net Mvc,如何向从my model.edmx文件生成的模型中的类或类的方法添加注释/属性?我问这个问题的原因是,每次我向类Model.Designer.cs添加注释时,当我通过设计器更改Model.edmx文件时,该注释就会消失 更具体地说,我正在寻找一种方法,将AllowHtml注释添加到我的一个模型类中的特定属性中,并使其保持在那里,即使在模型设计器视图中弄乱了它 这是控制器代码。Segment类的Content属性导致我的控制器在填充HTML时崩溃 [FacebookAuthorize(Pe

如何向从my model.edmx文件生成的模型中的类或类的方法添加注释/属性?我问这个问题的原因是,每次我向类Model.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");
    }

在设计器中更改模型时,自动生成的文件中的注释将始终消失

通过编写部分类并将其存储在单独的文件中,可以使用自定义属性扩展类

public partial class MyClass
{
    [AllowHtml]
    public int MyAnnotatedProperty
    {
        get { ... }
        set { ... }
    }
}

如果要注释自动生成的属性,请查看上面的内容。

可以使用
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回答,对于第二个问题,您可能应该打开另一个问题。

另一个可能的解决方案是使用元数据和数据注释模板,如中所述,但他在另一个文件中有此属性。我认为您需要使用元数据属性来解决他的问题。这会自动包含在整个模型中吗?它会在那里可见吗?你是说在edmx设计器中?不,它在那里看不见。那么很遗憾,这对我来说是不可用的。除了它不起作用之外。我的控制器在接收HTML数据时仍然崩溃。你能帮我吗?我在原始帖子中发布了控制器代码。什么是崩溃?你能提供例外信息吗?查看您的控制器,我不确定您使用
allowtmlatAttribute
试图获得什么,因为您正在接受and int和字符串。没有异常详细信息。我只是在浏览器中得到一个没有HTML输出的空白页面。但是,如果(如原始帖子所示)content属性没有设置为HTML内容,它就可以正常工作。您如何显示内容?事实上,我的解决方案确实回答了你原来的问题——如果你有不同的问题,那就是不同的问题。