0

我有一個簽名的操作是這樣的:如何控制自定義模型聯編程序的嘗試值?

public ActionResult Index([ModelBinder(typeof(MyEnumModelBinder))] MyEnum myEnum) 

它是這樣實現的:

public class MyEnumModelBinder: IModelBinder 
{ 
    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) 
    { 
     var valueProviderResult = bindingContext.ValueProvider.GetValue("myEnum"); 
     return valueProviderResult == null ? 
     MyEnum.Default : 
     valueProviderResult.AttemptedValue.ToMyEnum(); 
    } 
} 

基本上,我是一個原始值綁定到一個枚舉,非常簡單。工作正常。

但是,請注意,以獲得訪問企圖的價值,我需要使用魔法字符串(「myEnum」)。

有什麼辦法,我可以將其提供給模型綁定,所以去掉魔法字符串?

因爲如果我想在其他地方使用該模型綁定,然後我必須確保我所說的參數「myEnum」,否則會導致運行時錯誤。

我嘗試添加一個構造函數的模型綁定,但沒有什麼地方在那裏我居然實例化。

任何想法?

+0

我affraid沒有討巧的這一點。你真正要問的是如何獲取參數名稱。反射根本不公開這個。 – Polity 2012-02-21 03:09:30

回答

1

有什麼辦法,我可以將其提供給模型綁定,所以去掉魔法字符串?

肯定的:

var valueProviderResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName); 
+0

不錯。隊友的歡呼聲。 – RPM1984 2012-02-22 00:22:00

相關問題