【问题标题】:Are there issues with using .any() within mvc views?在 mvc 视图中使用 .any() 是否存在问题?
【发布时间】:2018-05-25 13:55:09
【问题描述】:

我们遇到了一个问题,即使用 .Any() linq 方法会导致 MVC 局部视图出现错误。错误是使用该方法会导致空引用错误 - 控制器内的相同 linq 代码不会导致此问题。 .

<div class="row">
@{
    //This line causes the page to throw an error:
    var isSelected = Model.ListOfReferenceType.Any(c => c.ReferenceType.Id == listTypeId);

    @if (isSelected)
    {
        <input type="checkbox" name="SomeCheckBox" id="SomeCheckBox" checked="checked" />
    }
    else
    {
        <input type="checkbox" name="SomeCheckBox" id="SomeCheckBox" />
    }

}
</div>

这是一个已知问题,其中某些 linq 函数会导致渲染引擎出现问题?

注意,我们使用的是 .net core 和 nancy - 不知道这是否能提供任何见解。

【问题讨论】:

  • 任何时候遇到错误,在您的问题中准确分享该错误是什么会很有帮助。
  • 您确定您的 ListOfReferenceType 包含您认为的功能,并且该列表中的每个对象都有一个可以调用 .Id 的有效 ReferenceType 吗?因为这在我的列表中比“也许我不能在 MVC 视图中使用 .Any() ”要高得多。 ;)
  • Model NULL 吗? Model.ListOfReferenceType NULL 吗?
  • 感谢 Marc 和 Shyju,是的,问题不包括底层对象。所以, any 没有失败。谢谢

标签: c# asp.net-mvc linq .net-core


【解决方案1】:

如果.Any返回null,则源或谓词为null

Enumerable.Any Method (IEnumerable, Func)

【讨论】:

    【解决方案2】:

    为了避免这种情况,如果您没有模型,请添加一个构造函数,并在构造函数内部启动属性 ListOfReferenceType。这将避免该属性为空。

    public class Example
    {
        public Example()
        {
            this.data = new List<int>();
        }
    
        public List<int> data
        {
            get;
            set;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2010-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 2011-01-23
      • 1970-01-01
      相关资源
      最近更新 更多