2017-04-07 84 views
0

在控制器中的MVC应用程序中,我使用了实体框架和LINQ。我将10条记录存储在一个变量中,然后将它们绑定到模型上。但如果没有记录,我会收到错误如果模型为null,如何处理null异常,如何在mvc中处理视图?

索引超出范围。必须是非负的并且小于 的大小。

虽然我处理null异常的视野。我正在编译时间错误

无法用数组初始值设定项初始化隐式类型变量。

查看:

function initMap() { 
      var labels = '12345678910'; 
      var labelIndex = 0; 

      @if (Model != null) 
        { 
         var myLatLng = { lat: @Model[0].latitude.ToString(), lng: @Model[0].longitude.ToString() }; 
        } 

      else 
        { 
          var myLatLng = { lat:0, lng:0};//Bharat Seva Ashram 
        } 

控制器:

List<AssetTrackerViewModel> model = new List<AssetTrackerViewModel>(); 
/// PIR 1 //RAD:DN 
try 
{ 
    WebRequest req = WebRequest.Create(@"https://url"); 
    req.Method = "GET"; 
    req.Headers["Authorization"] = "Basic " + "pwd=="; 
    HttpWebResponse resp = req.GetResponse() as HttpWebResponse; 
    var encoding = resp.CharacterSet == "" ? Encoding.UTF8 : Encoding.GetEncoding(resp.CharacterSet); 
    using (var stream = resp.GetResponseStream()) 
    { 
     var reader = new StreamReader(stream, encoding); 
     var responseString = reader.ReadToEnd(); 

     **//here "items" im getting null/empty** 
     var items = Pirs.Where(a => !a.dataFrame.EndsWith("AAAAAAAAAAA=")) 
             .GroupBy(a => a.dataFrame.Substring(a.dataFrame.Length - 12)) 
             .Select(g => g.First()) 
             .OrderByDescending(a => a.timestamp) 
             .Take(10); 

     foreach (var item in items) 
     { 
      byte[] data = Convert.FromBase64String(item.dataFrame.ToString()); 
     } 
    } 
} 
+3

就像你与别的做......把一个条件或者是一个守卫条款。 –

+0

你通过什么查看“物品”? – Krishna

+0

查看传递给模型的项目。 –

回答

2

的问题是,下面的代码是公认的剃刀代码,而你可能希望它是Javascript代码:

var myLatLng = { lat: @Model[0].latitude.ToString(), lng: @Model[0].longitude.ToString() }; 

只要你想用剃刀被忽略的语句前面添加@:

@if (Model != null) 
{ 
    @: var myLatLng = { lat: @Model[0].latitude.ToString(), lng: @Model[0].longitude.ToString() }; 
} 
else 
{ 
    @: var myLatLng = { lat:0, lng:0 }; 
} 
+0

你的代码是正确的,但@if(Model!= null)在我的情况下不起作用。即使模型计数= 0。它进入这个循环。当模型为空时,可以处理异常。 –

1

只是检查如果列表> 0

@if (Model != null && Model.Count >0)