C# 如果模型为空,如何处理空异常,如何在mvc视图中处理它?

C# 如果模型为空,如何处理空异常,如何在mvc视图中处理它?,c#,asp.net-mvc,entity-framework,linq,asp.net-mvc-4,C#,Asp.net Mvc,Entity Framework,Linq,Asp.net Mvc 4,在控制器中的MVC应用程序中,我使用实体框架和LINQ。我将10条记录存储在一个变量中,然后将它们绑定到模型。但如果没有记录,我就会出错 索引超出范围。必须为非负数且小于 收藏 而我在视图中处理空异常。我遇到编译时错误 无法使用数组初始值设定项初始化隐式类型的变量 查看: function initMap() { var labels = '12345678910'; var labelIndex = 0; @if (M

在控制器中的MVC应用程序中,我使用实体框架和LINQ。我将10条记录存储在一个变量中,然后将它们绑定到模型。但如果没有记录,我就会出错

索引超出范围。必须为非负数且小于 收藏

而我在视图中处理空异常。我遇到编译时错误

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

查看:

  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());
        }
    }
}
列表模型=新列表();
///pir1//RAD:DN
尝试
{
WebRequest req=WebRequest.Create(@)https://url");
req.Method=“GET”;
请求头[“授权”]=“基本”+“pwd=”;
HttpWebResponse resp=req.GetResponse()作为HttpWebResponse;
var encoding=resp.CharacterSet==“”?encoding.UTF8:encoding.GetEncoding(resp.CharacterSet);
使用(var stream=resp.GetResponseStream())
{
var reader=新的StreamReader(流,编码);
var responseString=reader.ReadToEnd();
**//这里的“项目”为空**
var items=Pirs.Where(a=>!a.dataFrame.EndsWith(“aaaaaaaaaa=”)
.GroupBy(a=>a.dataFrame.Substring(a.dataFrame.Length-12))
.Select(g=>g.First())
.OrderByDescending(a=>a.timestamp)
.采取(10);
foreach(项目中的var项目)
{
byte[]data=Convert.FromBase64String(item.dataFrame.ToString());
}
}
}

问题在于,下面的代码被识别为Razor代码,而您可能希望它是Javascript代码:

var   myLatLng = { lat:  @Model[0].latitude.ToString(), lng: @Model[0].longitude.ToString() };
只需在您希望Razor忽略的语句之前添加
@:

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

问题是,下面的代码被识别为Razor代码,而您可能希望它是Javascript代码:

var   myLatLng = { lat:  @Model[0].latitude.ToString(), lng: @Model[0].longitude.ToString() };
只需在您希望Razor忽略的语句之前添加
@:

@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 && Model.Count >0)

只需检查列表是否>0

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

像处理其他任何事情一样…放置条件或保护子句。您传递什么来查看“项”?查看传递到模型的项。像处理其他任何事情一样…放置条件或保护子句。您传递什么来查看“项”?查看传递到模型的项。ur代码正确,但@if(model!=null)在我的情况下不起作用。即使模型计数=0。当模型为null时,它将进入这个循环。unble将处理异常。ur代码是正确的,但@if(model!=null)在我的情况下不起作用。即使模型计数=0。当模型为null时,它将进入此循环。unble将处理异常。