Asp.net mvc EDMX文件中的MVC模型-向其中添加自定义注释,并使其保持不变?
如何向从my model.edmx文件生成的模型中的类或类的方法添加注释/属性?我问这个问题的原因是,每次我向类Model.Designer.cs添加注释时,当我通过设计器更改Model.edmx文件时,该注释就会消失 更具体地说,我正在寻找一种方法,将AllowHtml注释添加到我的一个模型类中的特定属性中,并使其保持在那里,即使在模型设计器视图中弄乱了它 这是控制器代码。Segment类的Content属性导致我的控制器在填充HTML时崩溃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
[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内容,它就可以正常工作。您如何显示内容?事实上,我的解决方案确实回答了你原来的问题——如果你有不同的问题,那就是不同的问题。