2012-08-23 38 views
0

不确定这是MVC中的最佳方法,但我如何返回条件视图,假设我想返回另一个视图,如果缺少'fbUID'则显示一些错误消息,请协助。谢谢。MVC +在条件下返回不同的部分视图

public PartialViewResult GetCredentials(string facebookUID, string facebookAccessTok) 
{ 
    string fbUID = facebookUID; 

    if (fbUID != null) 
    { 
     // Request fb profile pic 
     var rawImg = new Bitmap(ImageHelper.requestBitmapImage(fbUID)); 
     var processblurredImg = new Bitmap(rawImg); 

     var gb = new GaussianBlur(); 

     for (int i = 0; i < 8; i++) 
     { 
      gb.ApplyInPlace(processblurredImg); 
     } 

     // Download it to local drive/server 
     string uploadPath = Server.MapPath("~/upload"); 
     string fullPath = uploadPath + "\\ProfilePic.png"; 

     if (!Directory.Exists(uploadPath)) 
     { 
      Directory.CreateDirectory(uploadPath); 
     } 
     if (uploadPath != null) 
     { 
      ImageHelper.savePng(fullPath, processblurredImg, 500L); 
     } 

     return PartialView("BlurredPhoto"); 
    } 
    return PartialView("TestPartialView"); //if fbUID is null 
} 

回答

0

看看动作过滤器。这些允许您通过控制器方法上的一个属性来安装类,该方法在您的方法运行之前拦截该调用。你可以在这里做这种基本的检查,并从这里返回一个标准的错误处理结果。

0

ASP.NET MVC有一个内置的HandleErrorFilterAttribute,可帮助您在操作或其他过滤器中发生错误时返回错误视图。内置的HandleError过滤器返回视图不是局部视图,因此您可能必须创建一个自定义视图来返回局部视图。这个想法是,如果fbUID为空,并且自定义句柄错误过滤器在处理该异常时返回部分视图,则必须从操作中抛出一些自定义异常。

我建议去一个自定义句柄错误过滤器的方法,只有当你在很多地方看到这个功能它更多的工作是一件简单的事情!