我有一個MVC Web API get方法,我希望能夠傳遞一個可爲空的Guid作爲參數。如果我用「?id = null」設置GET,我會得到400響應。我可以通過一個空指導,但我寧願不這樣做。具有可空的Guid的Web Api GET方法可能嗎?
無論我將URI更改爲「id =,id = null等」,它都不會接受null。有誰知道如何使這項工作?
[HttpGet]
public User Get(Guid? Id)
更新路由配置
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
全部HTTP GET簽名的sourceID是ID喜歡傳爲空帕拉姆。
[HttpGet]
public IEnumerable<ActionItemsListViewModel> GetPagedList(int skip, int take, int page, int pageSize, [FromUri]List<GridSortInfo> sort, [FromUri] ActionItem.ActionItemStatusTypes? actionItemStatus, Guid? sourceId)
發現問題,此過濾器說模型狀態是無效的。
public class ApiValidationActionFilter : ActionFilterAttribute
{
public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext actionContext)
{
if (!actionContext.ModelState.IsValid)
{
var errors = actionContext.ModelState
.Where(e => e.Value.Errors.Count > 0)
.Select(e => e.Value.Errors.First().ErrorMessage).ToList();
actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.BadRequest, string.Join(" ", errors));
}
}
}
你儘量不要傳遞什麼? – MuriloKunze
@murilokunze是的,這確實有效,不幸的是,我用api控制不允許排除參數。 – NullReference