0

不确定这是否是 MVC 中的最佳方法,但我如何在有条件的情况下返回视图,假设如果我的“fbUID”丢失,我是否想返回另一个显示一些错误消息的视图,请提供帮助。谢谢。

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
}
4

2 回答 2

0

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

于 2012-08-23T08:52:44.333 回答
0

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

我建议仅当您在许多地方看到此功能时才使用自定义句柄错误过滤器方法,否则对于简单的事情来说它的工作量更大!

于 2012-08-23T10:03:44.923 回答