任何人都可以解释一下MVC中UIHint属性的用途.我们为什么需要这个.以及何时以及如何使用.谢谢
什么是在MVC中使用UIHint属性.任何人都可以请我提供一个如何使用它及其功能的简单示例.
我有以下UIHInt基于attibute:
[AttributeUsage(AttributeTargets.Property)]
public class DropDownListAttribute : UIHintAttribute, IMetadataAware
{
public DropDownListAttribute(string selectListName)
: base(KnownUiHints.DropDown, KnownPresentationLayers.Mvc, selectListName)
{
SelectListName = selectListName;
}
public string SelectListName { get; set; }
public void OnMetadataCreated(ModelMetadata metadata)
{
metadata.AdditionalValues[KnowMetadataKeys.SelectListName] = SelectListName;
}
}
Run Code Online (Sandbox Code Playgroud)
它的目的是将SelectList分配给要从列表中选择的单值视图模型属性,如下所示:
public class DemoModel: ViewModel
{
[Required]
[DropDownList("LanguageSelect")]
[Display(Name = "Language")]
public int? LanguageId { get; set; }
public SelectList LanguageSelect { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我现在正在使用一些很棒的Golbergian机器和我自己的元数据提供商,但是IMetadataAware.OnMetadataCreated我发现,我觉得我可以简化这个.现在我添加SelectListName到元数据,然后跳过一些箍到a)将SelectList变成一种全局字典,b)在渲染下拉列表时从该字典中获取选择列表.
我想将SelectList本身添加到属性中的模型元数据,即属性适用的属性的本地元数据,但是如何访问该属性或它包含类型?
entity-framework data-annotations entity-framework-5 asp.net-mvc-uihint
假设一个这样的抽象模型:
public abstract class MyClass : BaseEntity
{
[UIHint("File")]
public long? DocumentFileId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
问题是Cannot resolve template 'File',虽然View编辑器模板中有File.cshtml.

关键是,如果我没有将MyClass定义为抽象类,则会解决错误.
我的问题是,为什么编辑器模板无法在抽象类中解析,我该如何处理呢?
c# resharper abstract-class mvc-editor-templates asp.net-mvc-uihint
我想知道如何使用UIHint属性生成DropDownList.我已经定制了一些预定义的属性,但我不知道如何继续生成DropDownLists.
这是我对我的最后一个做的,我想以类似的方式使用它:
public class CartProduct
{
[Required]
[UIHint("Spinner")]
public int? Quantity { get; set; }
[Required]
[UIHint("MultilineText")]
public string Description { get; set; }
}
Run Code Online (Sandbox Code Playgroud)