Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 序列不包含元素-IList包含项_C#_.net_Asp.net Mvc_Linq_Generics - Fatal编程技术网

C# 序列不包含元素-IList包含项

C# 序列不包含元素-IList包含项,c#,.net,asp.net-mvc,linq,generics,C#,.net,Asp.net Mvc,Linq,Generics,上面的代码给了我InvalidOperationException,消息序列不包含任何元素 Items是IList类型,它包含两个元素,尽管它在foreach循环中给了我异常 我在I.Name上应用了watch,它显示了一个值,但当foreach循环中的行被执行时,它给出了异常 问题是什么 堆栈跟踪 CheckItemName方法 在使用ASP或MVC+SilverLight时,我不建议使用First或FirstOrDefault 搜索。首先;或.FirstOrDefault和add->.Def

上面的代码给了我InvalidOperationException,消息序列不包含任何元素

Items是IList类型,它包含两个元素,尽管它在foreach循环中给了我异常

我在I.Name上应用了watch,它显示了一个值,但当foreach循环中的行被执行时,它给出了异常

问题是什么

堆栈跟踪

CheckItemName方法


在使用ASP或MVC+SilverLight时,我不建议使用First或FirstOrDefault


搜索。首先;或.FirstOrDefault和add->.DefaultIfEmpty

i.名称的类型是什么?如果使用字符串s=abc+i.Name.ToString,它是否有效?;请单击按钮并通过编辑原始帖子将整个异常粘贴到此处。即使项目为空,foreach中也不会出现异常。如果模型为空,则foreach也将被忽略。请查看_页面_视图_国家_酒店_cshtml.Execute。您正在使用ENumerable。首先,如果序列中至少没有一个元素,则会引发异常。您确定正在查看正在执行的代码吗?例如,您显示的代码都不包含对Enumerable.First或任何集合的第一个扩展方法的调用。我怀疑问题出在你认为的地方。也许这个文件曾经包含这样一个调用,但是您已经修改了源代码,IIS仍然将旧版本缓存在某个地方?First和FirstOrDefaults具有完美定义的语义,非常适合ASP和MVC+Silverlight。如果为空则添加默认值只会给出不同的解决方案,并不适用于所有上下文。
foreach (var i in Model.Items)
{
        string s = "abc" + i.Name;
}
   at System.Linq.Enumerable.First[TSource](IEnumerable`1 source)
   at ASP._Page_Views_Country_Hotels_cshtml.Execute() in d:\app\myController\items.cshtml:line 15
   at System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
   at System.Web.Mvc.WebViewPage.ExecutePageHierarchy()
   at System.Web.WebPages.StartPage.RunPage()
   at System.Web.WebPages.StartPage.ExecutePageHierarchy()
   at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage)
   at System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance)
   at System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer)
   at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult)
   at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass1a.<InvokeActionResultWithFilters>b__17()
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation)
public class ItemsViewModel 
{
    public Category Category { get; set; }
    public IList<Item> Items { get; set; }
}
@model IPF.Web.Models.ItemsViewModel

@{
    Layout = "_SubLayout.cshtml";
    string desc = "Items of " + Model.Category.Name + ". ";
    string key = "Items of " + Model.Category.Name;
}   

<h1>@string.Format("{0} - Items", Model.Category.Name)</h1>
@if (Model.Items.Count > 0)
{
    IList<Models.Item> items = Model.Items.ToList();//added as suggested
    foreach (var i in items)
    {
        desc += i.Name.ToString() + " ,";//this is where I am getting exception
        //some other stuff
    }
}
public class Item
{
     [HiddenInput(DisplayValue = false)]
     public int Id { get; set; }

     [MaxLength(300, ErrorMessage = "Max length can be 300 only.")]
     [Required]
     [Remote("CheckItemName", "Item", AdditionalFields = "Id")]
     public string Name { get; set; }

     [Required]
     [MinLength(50, ErrorMessage = "Min 50 characters should be entered.")]
     [DataType(DataType.MultilineText)]
     [AllowHtml]
     [UIHint("tinymce_jquery_full")]
     public string Description { get; set; }
}
public JsonResult CheckItemName([Bind(Prefix = "Item")]Item oItem)
{
    return Json(!repository.Items.Where(c => c.Id != oItem.Id).Any(c => c.Name == oItem.Name), JsonRequestBehavior.AllowGet);
}