c# - 如何将 UIHint 属性用于接口(interface)的属性类型?

标签 c# asp.net-mvc-3 interface

我有下一个 View 模型:

public class PickUpLocationViewModel 
{
    public DateTime PuDate {get;set}

    public IAddressViewModel {get;set;}
}

取决于 IAddressViewModel 的实现 我想使用适当的 UIHint("Airport")、UIHint("Seaport") 等。这可能吗?如果是,如何?

最佳答案

您可以像这样在 TemplateName 的 IAddressViewModel 上创建一个额外的属性:

public interface IAddressViewModel
{
    string TemplateName { get; }
}

那么对于每个实现 IAddressViewModel 的类,您可以定义一个单独的模板名称,例如:

public class SeaportAddressViewModel : IAddressViewModel
{
    public string TemplateName
    {
        get
        {
            return "Seaport";
        }
    }
}

然后在您的 View 中,您可以使用 EditorFor 的重载之一,例如:

@Html.EditorFor(m => m.Address, Model.Address.TemplateName)

这应该会导致它使用名为 Seaport.cshtml 的编辑器模板。

关于c# - 如何将 UIHint 属性用于接口(interface)的属性类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12057722/

相关文章:

c# - 在没有 'slash' 的 ASP.NET Core 中路由

c# - Silverlight:值不在预期范围异常之内

c++ - 在 C++ 中声明 "interface"并且不将其 vtable 发送到每个翻译单元

c# - 我应该通过哪个接口(interface)公开 List<T>?

java - 如何在不使用迭代器或集合的情况下迭代 Map?

C# 只读与获取

c# - 从 C# 调用 Java 代码

asp.net-mvc-3 - 有没有办法在帖子(ASP.NET MVC 3)的 View 模型中传回 Request.Files?

javascript - 在 JavaScript 中迭代 IEnumerable 模型

c# - MVC 多区域 MVC 3