如果文件上传为空,则为Umbraco 7

时间:2016-07-09 11:46:16

标签: c# umbraco7

我正在使用Umbraco 7和文件上传。我想检查是否有上传的文件。

如果没有上传文件,我会收到以下错误:Object reference not set to an instance of an object.

我删除了一些代码以便于阅读,但下面是我的表面控制器:

using System.Web.Mvc;
using Umbraco.Web.Mvc;
using Umbraco.Web;

namespace Sp34k.Controllers
{
    public class GalleryItem
    {
        public string projectFile { get; set; }
    }

    public class PortfolioSurfaceController : SurfaceController
    {
        // GET: PortfolioSurface
        public ActionResult GetCategoryDetails(int id)
        {
            GalleryItem gItem = new GalleryItem();
            var node = Umbraco.TypedContent(id);

            string file = node["uploadProjectFiles"].ToString();

            if (string.IsNullOrWhiteSpace(file))
            {
                gItem.projectFile = node["uploadProjectFiles"].ToString();
            }

            return Json(gItem, JsonRequestBehavior.AllowGet);
        }
    }
}

2 个答案:

答案 0 :(得分:0)

我认为问题出现在这一行:

string file = node["uploadProjectFiles"].ToString();

您可以使用该密钥从null获得node作为回复,但您无法在其上调用ToString()

还有另一个问题:如果字符串 null或空格,则将其分配给gItem.projectFile。我假设你只想在 null或空格时分配它。

如果node中的对象绝对是字符串或null,则可以轻松修复代码:

string file = node["uploadProjectFiles"] as string;

if (!string.IsNullOrWhiteSpace(file))
{
    gItem.projectFile = file;
}

as string表示"如果对象是字符串,则指定它,或者如果它不返回null。"这样你就可以获得一个字符串(可能仍然是空/空格)或者使用类型字符串获取null,然后你可以检查它。

答案 1 :(得分:0)

您正在访问的节点密钥可能为null,您还需要检查它是否为null:

string file = node["uploadProjectFiles"] !=null ? node["uploadProjectFiles"].ToString() : String.Empty;

然后使用文件变量:

if (string.IsNullOrWhiteSpace(file))
{
   gItem.projectFile = file;
}