简短的问题:
如果我已经为我的对象提供了一种隐式转换机制,可以将其值从纯字符串转换,那么它可以自动绑定到 ViewModel 的属性吗?
细节:
我有一个像这样的复杂对象(为简洁明了而简化)
public enum PrimaryScopeEnum {
Pivot1,
Pivot2
}
public enum SecondaryScopeEnum {
Entity1,
Entity2,
Entity3,
Entity4
}
public class DataScope {
public PrimaryScopeEnum PrimaryScope { get; set; }
public SecondaryScopeEnum SecondaryScope { get; set; }
public static implicit operator DataScope ( string combinedScope ) {
DataScope ds = new DataScope();
// Logic for populating Primary and Secondary Scope enums
return ds;
}
}
我在我的视图模型中使用上述对象,如下所示:
public enum PageModeEnum {
View,
Add,
Edit
}
public class DisplayInfoViewModel {
public string SetID { get; set; }
public PageModeEnum PageMode { get; set; }
public DataScope Scope { get; set; }
}
我的控制器中的操作设置为
// Accessed with /MyController/DisplayInfo?SetID=22&PageMode=View&Scope=Pivot1
public virtual ActionResult DisplayInfo ( DisplayInfoViewModel vm ) {
// vm.SetID is 22
// vm.PageMode is PageModeEnum.View
// vm.Scope is null
return View ( vm );
}
我的问题出在操作中,即使我已经给出了从字符串到DataScope
类的隐式转换,它在执行期间无法正确绑定。
我已经分别使用正在传递的值(此处为 Pivot1)测试了铸件,并且铸件工作正常。
有没有办法让这种转换隐式发生,或者我应该将视图模型Scope
变量更改为纯字符串,然后进行手动转换。