0
我在文件上傳操作中實現了自定義模型聯編程序。有時文件上傳被服務器丟棄,並且BindModel方法被部分數據調用(ContentLenght和TotalBytes在這裏不匹配)。我想中止自定義模型綁定的動作執行,該怎麼做?在BindModel方法中中止操作
public class OptionModelBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var optionModelName = GetOptionModelName(controllerContext);
if (optionModelName != null) return null// !!!How to abort Action execution?!!! here
Trace.TraceInformation(optionModelName);
var model = System.Reflection.Assembly.GetExecutingAssembly().CreateInstance(optionModelName);
bindingContext.ModelMetadata = ModelMetadataProviders.Current.GetMetadataForType(() => model, model.GetType());
return base.BindModel(controllerContext, bindingContext);
}
public class OptionModelBinderAttribute : CustomModelBinderAttribute
{
public override IModelBinder GetBinder()
{
return new OptionModelBinder();
}
}
[HttpPost]
public ActionResult UploadFile(IEnumerable<HttpPostedFileBase> clientUpload, [OptionModelBinder]IOptionViewModel formData)
{
}
爲什麼要從模型聯編程序中止操作執行?您可以簡單地通知您的文件沒有正確上傳:ModelState.AddModelError(errorMessage,new [] {fileName});'在您的模型聯編程序中,然後在您的操作中測試'ModelState.IsValid'。 –