我在域模型上有一个描述字段,我想打开它以允许使用 html。当我提交表单时,我收到了“可能有危险的请求”yada....这是我预料到的,但事实证明很难用我当前的设置进行补救。
我的 View 模型有多个对象,例如:
public class MyViewModel
{
public ISomething Something { get; set; }
public IAnotherThing Another { get; set; }
}
ISomething
包含描述,接口(interface)和类本身在 mvc 站点的另一个项目中定义。
虽然我确定我可以在 Controller 操作上添加 ValidateInput(false)
属性,但我不一定要打开所有打开的东西...只是这个特定的描述。
无论如何,[AllowHtml]
似乎是答案,但它是在 System.Web.Mvc
中定义的。添加对外部库的引用让我很痛苦,但我咬紧牙关,我什至无法添加该引用,因为它不在我的可用列表中,即使它与 mvc4 应用程序位于同一解决方案中。
我忍不住想象其他人已经能够克服这一点,但我似乎被打败了。非常感谢任何帮助!
最佳答案
您是否尝试过使用 MetaDataType 属性来扩展您的模型?
如果您的模型是分部类,您可以:
namespace YourModelsNamespace
{
[MetadataType(typeof(ISomethingMD))]
public partial class ISomething
{
}
public partial class ISomethingMD
{
[AllowHtml]
public string Descriptin { get; set; }
}
}
这样您就可以“扩展”模型,并为该特定属性设置元数据。这些类将在您的 MVC 项目中,因此您可以更好地控制模型。这种方法可用于添加显示名称属性,以及 DataAnnotations 命名空间中的其他属性。
请注意,此类的命名空间应与您的模型相同。
关于c# - 对于站点上下文之外的模型,允许在 MVC 中将 HTML 用于文本区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13751694/