2016-07-09 10 views
0

ファイルアップロードでUmbraco 7を使用しています。アップロードされたファイルがあるかどうかを確認したい。ファイルアップロードが空の場合Umbraco 7

アップロードされたファイルが存在しない場合、私は次のエラーを受け取る:Object reference not set to an instance of an object.

私はそれが簡単に通読できるようにするいくつかのコードを削除しますが、以下の私のsurfacecontrollerでいます

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

おそらく今は良いですか? ;)私はそれを説明する方法を他の手がかりがありません。 –

+1

ええ、これははるかに良いです。最初のものは「what、String.IsNullOrEmpty()?」のようなものでした。 :-) –

答えて

0

あなたがトンでnodeからこれに対する応答としてnullを得ることができます

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

:私はこの問題は、このライン上にあると仮定しますあなたはそれにToString()を呼び出すことはできません。

また、別の問題があります。文字列の場合は、空白または空白の場合はgItem.projectFileに割り当てます。 ではなく、 nullまたは空白の場合にのみ割り当てたいと思います。

node内のオブジェクトは間違いなく文字列またはnullの場合は、簡単にコードを修正することができます:as stringがオブジェクトである場合、それはにISN場合、文字列は、そのように割り当てるか、」意味

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

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

tはnullを返します。このようにして、文字列(まだ空白/空白の場合があります)または型文字列のnullが取得され、チェックすることができます。

0

あなたがアクセスしているノードのキーはあなたにもそれにnullをチェックする必要があり、おそらくnullである:

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

し、次の使用ファイルの変数:

if (string.IsNullOrWhiteSpace(file)) 
{ 
    gItem.projectFile = file; 
} 
関連する問題