У меня есть такая модель;ValueProvider.GetValue Метод расширения
public class QuickQuote
{
[Required]
public Enumerations.AUSTRALIA_STATES state { get; set; }
[Required]
public Enumerations.FAMILY_TYPE familyType { get; set; }
Как вы можете видеть, две проперии - это перечисления.
Теперь я хочу использовать свое собственное связующее устройство по причинам, по которым я сейчас не буду беспокоиться.
У меня есть;
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);
}
Проблема заключается в том, что для каждого свойства, и есть куча, мне нужно сделать весь блок попытаться поймать.
Что я думал, что я могу сделать, это создать метод расширения, который будет делать весь блок для меня, и все, что мне нужно будет передать, это свойство модели и перечисление.
Так что я мог бы что-то сделать;
quickQuote.state = bindingContext.ValueProvider.GetModelValue("state", ...)
т.д.
Возможно ли это?
+1 Я сделал это, спасибо большое. – griegs
Я не могу отметить свой собственный ответ, но ваш очень хорошо, поэтому ... – griegs