C# 任务[0]。完成者) @Html.DisplayNameFor(model=>model.AccountRequest[0].CompletedDate) @foreach(Model.AccountRequest中的var项){ @DisplayFor(modelItem=>item.CompletedDate) @DisplayFor(modelItem=>item.PracticeName) @DisplayFor(modelItem=>item.GroupID) @DisplayFor(modelItem=>item.Group.SalesRep) @DisplayFor(modelItem=>item.RequestedBy) @DisplayFor(modelItem=>item.RequestDate) @如果(item.RequestStatus==1) { Html.显示(“已完成”); }else if(item.RequestStatus==2) { Html.Display(“拒绝”); }否则如果(item.RequestStatus==3) { Html.Display(“在不同组下”); }else if(item.RequestStatus==4) { Html.显示(“账户关闭”); } @DisplayFor(modelItem=>item.ClientId) @DisplayFor(modelItem=>item.CompletedBy) @DisplayFor(modelItem=>item.CompletedDate) 细节 }
为什么要使用!=操作员导致了这样的错误,我能做些什么来修复它C# 任务[0]。完成者) @Html.DisplayNameFor(model=>model.AccountRequest[0].CompletedDate) @foreach(Model.AccountRequest中的var项){ @DisplayFor(modelItem=>item.CompletedDate) @DisplayFor(modelItem=>item.PracticeName) @DisplayFor(modelItem=>item.GroupID) @DisplayFor(modelItem=>item.Group.SalesRep) @DisplayFor(modelItem=>item.RequestedBy) @DisplayFor(modelItem=>item.RequestDate) @如果(item.RequestStatus==1) { Html.显示(“已完成”); }else if(item.RequestStatus==2) { Html.Display(“拒绝”); }否则如果(item.RequestStatus==3) { Html.Display(“在不同组下”); }else if(item.RequestStatus==4) { Html.显示(“账户关闭”); } @DisplayFor(modelItem=>item.ClientId) @DisplayFor(modelItem=>item.CompletedBy) @DisplayFor(modelItem=>item.CompletedDate) 细节 },c#,linq,asp.net-core,razor-pages,C#,Linq,Asp.net Core,Razor Pages,为什么要使用!=操作员导致了这样的错误,我能做些什么来修复它 提前感谢您的帮助。有关其中一条返回的记录,其中a.RequestStatus!=0计算为true时,组关系为空,这将在计算该记录的a.Group.saleRep或a.Group.saleRep时导致NRE 您可以通过添加一个检查来查看关系是否存在(见下文),但是这可能不是逻辑上正确的(这取决于数据约束和您考虑的坏数据,这确实是一个商业决策)。 var请求= 从in_context.AccountRequests中 a组在哪里!=空&&
提前感谢您的帮助。有关其中一条返回的记录,其中
a.RequestStatus!=0
计算为true时,组
关系为空,这将在计算该记录的a.Group.saleRep
或a.Group.saleRep
时导致NRE
您可以通过添加一个检查来查看关系是否存在(见下文),但是这可能不是逻辑上正确的(这取决于数据约束和您考虑的坏数据,这确实是一个商业决策)。
var请求=
从in_context.AccountRequests中
a组在哪里!=空&&//Try!(a.RequestStatus==0)
而不是a.RequestStatus!=0
fakepath\Pages\SalesReps\CompletedAccountRequests\Index.cshtml.cs:line 30
如果不起作用,请尝试!(a.RequestStatus.Equals(0))
@RobertHarvey我尝试了你的两个建议,但不幸的是,两个建议都无效。你收到的错误是有逻辑原因的。您正在尝试取消引用包含null的引用变量。无论如何,最好是找出这个逻辑原因是什么。正如@Igor指出的,您还没有向我们展示实际引发异常的代码。非常感谢。这对我很有效。我甚至没有考虑过,会计任务之间的关系会以这样的方式影响它。我将确保在以后的页面中注意这一点。就其逻辑部分而言,我将对为这些对象输入的数据添加限制,这样就不会显示不正确的数据。
System.NullReferenceException: Object reference not set to an instance of an object.
at lambda_method(Closure , AccountRequest )
at System.Linq.AsyncEnumerable.WhereSelectEnumerableAsyncIterator`2.<MoveNextCore>d__8.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
at System.Linq.AsyncEnumerable.AsyncIterator`1.<MoveNext>d__10.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at Microsoft.EntityFrameworkCore.Query.Internal.AsyncLinqOperatorProvider.ExceptionInterceptor`1.EnumeratorExceptionInterceptor.<MoveNext>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
at System.Linq.AsyncEnumerable.<Aggregate_>d__6`3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at Webapp.Pages.SalesReps.CompletedAccountRequests.IndexModel.<OnGetAsync>d__10.MoveNext() in fakepath\Pages\SalesReps\CompletedAccountRequests\Index.cshtml.cs:line 30
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.EntityFrameworkCore;
using WebApp.Data;
using WebApp.Models;
namespace WebApp.Pages.SalesReps.NewAccountRequests
{
public class IndexModel : PageModel
{
private readonly AccessionContext _context;
public IndexModel(AccessionContext context)
{
_context = context;
}
public IList<AccountRequest> AccountRequest { get;set; }
public IList<String> Claims { get; set; }
public async Task OnGetAsync()
{
var claim = from c in User.Claims where c.Type == "SalesRep" select c.Value;
Claims = claim.ToList();
var requests =
from a in _context.AccountRequests
where ((Claims.Contains(a.Group.SalesRep))
|| (Claims.Contains(a.Group.Manager)))
&& a.RequestStatus == 0
orderby a.RequestDate
select a;
if (requests != null)
{
AccountRequest = await requests.ToListAsync();
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.EntityFrameworkCore;
using WebApp.Data;
using WebApp.Models;
namespace WebApp.Pages.SalesReps.CompletedAccountRequests
{
public class IndexModel : PageModel
{
private readonly AccessionContext _context;
public IndexModel(AccessionContext context)
{
_context = context;
}
public IList<AccountRequest> AccountRequest { get;set; }
public IList<String> Claims { get; set; }
public async Task OnGetAsync()
{
var claim = from c in User.Claims where c.Type == "SalesRep" select c.Value;
Claims = claim.ToList();
var requests =
from a in _context.AccountRequests
where ((Claims.Contains(a.Group.SalesRep))
|| (Claims.Contains(a.Group.Manager)))
&& a.RequestStatus != 0
orderby a.RequestDate
select a;
AccountRequest = await requests.ToListAsync();
}
}
}
@page
@model WebApp.Pages.SalesReps.CompletedAccountRequests.IndexModel
@{
ViewData["Title"] = "Index";
}
<h2>Index</h2>
<table class="table">
<thead>
<tr>
<th>
Date Completed
</th>
<th>
@Html.DisplayNameFor(model => model.AccountRequest[0].PracticeName)
</th>
<th>
@Html.DisplayNameFor(model => model.AccountRequest[0].GroupID)
</th>
<th>
@Html.DisplayNameFor(model => model.AccountRequest[0].Group.SalesRep)
</th>
<th>
@Html.DisplayNameFor(model => model.AccountRequest[0].RequestedBy)
</th>
<th>
@Html.DisplayNameFor(model => model.AccountRequest[0].RequestDate)
</th>
<th>
@Html.DisplayNameFor(model => model.AccountRequest[0].RequestStatus)
</th>
<th>
@Html.DisplayNameFor(model => model.AccountRequest[0].ClientIDS)
</th>
<th>
@Html.DisplayNameFor(model => model.AccountRequest[0].CompletedBy)
</th>
<th>
@Html.DisplayNameFor(model => model.AccountRequest[0].CompletedDate)
</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model.AccountRequest) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.CompletedDate)
</td>
<td>
@Html.DisplayFor(modelItem => item.PracticeName)
</td>
<th>
@Html.DisplayFor(modelItem => item.GroupID)
</th>
<th>
@Html.DisplayFor(modelItem => item.Group.SalesRep)
</th>
<td>
@Html.DisplayFor(modelItem => item.RequestedBy)
</td>
<td>
@Html.DisplayFor(modelItem => item.RequestDate)
</td>
<td>
@if (item.RequestStatus == 1)
{
Html.Display("Completed");
} else if(item.RequestStatus == 2)
{
Html.Display("Denied");
} else if (item.RequestStatus == 3)
{
Html.Display("Under Different Group");
} else if (item.RequestStatus == 4)
{
Html.Display("Account Closed");
}
</td>
<td>
@Html.DisplayFor(modelItem => item.ClientIDS)
</td>
<td>
@Html.DisplayFor(modelItem => item.CompletedBy)
</td>
<td>
@Html.DisplayFor(modelItem => item.CompletedDate)
</td>
<td>
<a asp-page="./Details" asp-route-id="@item.AccountRequestID">Details</a>
</td>
</tr>
}
</tbody>
</table>
var requests =
from a in _context.AccountRequests
where a.Group != null && // <-- added null check
((Claims.Contains(a.Group.SalesRep)) || (Claims.Contains(a.Group.Manager)))
&& a.RequestStatus != 0
orderby a.RequestDate
select a;