MVC +在条件下返回不同的部分视图

时间:2012-08-23 08:46:14

标签: c# asp.net-mvc asp.net-mvc-partialview

不确定这是否是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
}

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

我建议只有在很多地方看到这个功能时才会使用自定义句柄错误过滤器方法,这对于一个简单的事情来说更有用!