我有這樣的模型;ValueProvider.GetValue擴展方法
public class QuickQuote
{
[Required]
public Enumerations.AUSTRALIA_STATES state { get; set; }
[Required]
public Enumerations.FAMILY_TYPE familyType { get; set; }
正如你可以看到兩個proerties是枚舉。
現在我想僱用我自己的模型活頁夾,原因是我暫時不打算進入。
所以我有;
public class QuickQuoteBinder : DefaultModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
quickQuote = new QuickQuote();
try
{
quickQuote.state = (Enumerations.AUSTRALIA_STATES)
Enum.Parse(typeof(Enumerations.AUSTRALIA_STATES),
bindingContext.ValueProvider.GetValue(bindingContext.ModelName + ".state").AttemptedValue);
}
catch {
ModelState modelState = new ModelState();
ModelError err = new ModelError("Required");
modelState.Errors.Add(err);
bindingContext.ModelState.Add(bindingContext.ModelName + ".state", modelState);
}
問題是,對於每個屬性,並且有堆,我需要做整個try catch塊。
我想我可能會做的是創建一個擴展方法,將爲我做整個塊,我需要通過的所有模型屬性和枚舉。
所以我可以做一些像;
quickQuote.state = bindingContext.ValueProvider.GetModelValue("state", ...)
等
這可能嗎?
+1我做到了,非常感謝。 – griegs 2010-04-16 05:43:02
我不能將自己標記爲答案,但你的答案非常好,所以...... – griegs 2010-04-16 05:44:45