以下是这个。
通常情况下,当我有一个城市时,我会使用一些javascript来自动填充城市作为用户类型。
现在我希望它使用edittemplate自动进行。所以我会改变:
Public String City{get;set;}
到
Public City City {get;set;}
但我不能继承System.String类,所以我想要做到这一点的最佳选择。 我会创建一个City类的新视图,并在我的EditorTemplate中添加javascript,所以我不再需要添加它:)。
提前致谢。
答案 0 :(得分:2)
我认为你想要的是使用Html.EditorFor<City>()
方法及其兄弟,这对于简单类型并不适用。您可以将City
类隐式地转换为System.String
和来自string
,并且它应该与实际的public class City
{
private readonly string city;
public City(string city)
{
if (city == null)
throw new ArgumentNullException("city");
this.city = city;
}
public override bool Equals(object obj)
{
City other = obj as City;
return (other != null) && this.city.Equals(other.city);
}
public override int GetHashCode()
{
return this.city.GetHashCode();
}
public override string ToString()
{
return this.city;
}
public static implicit operator string(City city)
{
return city.city;
}
public static implicit operator City(string city)
{
return new City(city);
}
}
无法区分:
System.String
现在可以将此类传递给期望string city = new City("Washington");
City city = "Washington";
的方法,反之亦然:
{{1}}
答案 1 :(得分:2)
我不打算使用新类型,但在模型上使用元数据来更改编辑器。属性上的[UIHint("MyCityTemplate")]
属性将使EditorFor和DisplayFor使用MyCityTemplate而不是字符串的默认编辑器模板。