2010-08-02 55 views
0

我正在使用MVC2 .net并且在文件上传时遇到问题。如果文件大小超过限制,那么我想在同一页面上显示一些例外。重定向到mvc .net中应用程序错误的相同页面

+0

嗨,也许这篇文章可以帮助http://stackoverflow.com/questions/3007737/how-can-i-handle-maxrequestlength-exceptions-elegantly – uvita 2010-08-02 12:24:50

回答

2

在过去,我创建了一个图像大小属性并使用数据注释来验证图像。

public sealed class ImageSizeAttribute : ValidationAttribute 
{ 
    public int Width { get; set; } 
    public int Height { get; set; } 

    private const string DefaultErrorMessage = "{0} dimensions cannot be greater than {1} x {2}"; 

    public ImageSizeAttribute(int width, int height) 
     : base(DefaultErrorMessage) 
    { 
     Width = width; 
     Height = height; 
    } 

    public override string FormatErrorMessage(string name) 
    { 
     return string.Format(CultureInfo.CurrentUICulture, ErrorMessageString, name, Width, Height); 
    } 

    public override bool IsValid(object value) 
    { 
     // Turn HttpPostedFileBase into Image and validate size... 
    } 
} 

在您的视图模型中,您现在可以添加一个属性来验证它。

[ImageSize(200, 200)] 
public HttpPostedFileBase Avatar { get; set; } 

在你看来要确保你至少有一个验证消息

<%= Html.ValidationMessageFor(u => u.Avatar) %> 

,你可以看到这篇文章关于enabling client validation

现在在你的控制器,你可以做你验证,如果发生错误只是返回与现有模型相同的视图,您将看到错误消息。

if (ModelState.IsValid) 
{ 
    // More validation and saving. 
    ... 
    return RedirectToRoute("UserDetails", ...); 
} 
return View(model); 
相关问题