我正在使用Web API 5构建Web Service。我正在通过扩展IModelBinder接口来实现将自定义模型绑定程序映射为操作的复杂类型。绑定部分工作正常。但是不会发生模型验证。ModelState.IsValid始终为true。
public class PagingParamsVM
{
[Range(1, Int32.MaxValue, ErrorMessage = "Page must be at least 1")]
public int? Page { get; set; }
[Range(1, Int32.MaxValue, ErrorMessage = "Page size must be at least 1")]
public int? PageSize { get; set; }
}
public class PaginationModelBinder : IModelBinder
{
public bool BindModel(HttpActionContext actionContext, ModelBindingContext bindingContext)
{
var model = (PagingParamsVM)bindingContext.Model ?? new PagingParamsVM();
//model population logic
.....
bindingContext.Model = model;
return true;
}
}
public IEnumerable<NewsItemVM> Get([ModelBinder(typeof(PaginationModelBinder))]PagingParamsVM pegination)
{ …Run Code Online (Sandbox Code Playgroud) 我正在使用 EF Core 2.0.1。我正在尝试获取最后一个订单数据以及用户信息来填充 UserDto,如下所示,
(from u in DbContext.User.Where(u => u.UserId == userId)
let last = u.Orders.LastOrDefault()
select new UserDto
{
Id = u.Id,
Name = u.Name,
LastOrderId = (last == null ? null : last.Id),
LastOrderDate = (last == null ? null : last.Date)
}
Run Code Online (Sandbox Code Playgroud)
这会引发以下异常。我怎样才能解决这个问题?
at System.Linq.Expressions.Expression.Condition(Expression test, Expression ifTrue, Expression ifFalse, Type type)
at System.Linq.Expressions.ConditionalExpression.Update(Expression test, Expression ifTrue, Expression ifFalse)
at System.Linq.Expressions.ExpressionVisitor.VisitConditional(ConditionalExpression node)
at System.Linq.Expressions.ConditionalExpression.Accept(ExpressionVisitor visitor)
at System.Linq.Expressions.ExpressionVisitor.Visit(Expression node)
at Microsoft.EntityFrameworkCore.Query.ExpressionVisitors.RelationalProjectionExpressionVisitor.Visit(Expression expression)
at System.Linq.Expressions.ExpressionVisitor.VisitMemberAssignment(MemberAssignment node)
at System.Linq.Expressions.ExpressionVisitor.VisitMemberBinding(MemberBinding …Run Code Online (Sandbox Code Playgroud)