【发布时间】:2017-11-29 11:14:00
【问题描述】:
我的路线是:
public void RegisterRoute(HttpRouteCollection routes) {
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{guid}",
defaults: new { guid = RouteParameter.Optional }
);
}
控制器动作就像
public IHttpActionResult Get(Guid guid) {
当我通过 api/{controller}/2ADEA345-7F7A-4313-87AE-F05E8B2DE678 时一切正常,但是当我为 guid 传递无效值时,例如
api/{controller}/xxxxxx 然后我得到错误:
{
"message": "The request is invalid.",
"messageDetail": "The parameters dictionary contains a null entry for parameter 'guid' of non-nullable type 'System.Guid' for method 'System.Web.Http.IHttpActionResult Get(System.Guid)' in 'Web.API.Controller.UserController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter."
}
如何显示我自己的消息,例如:
{
"guid": "The value is invalid.",
}
我正在尝试创建自定义模型绑定器,但它不起作用
public class GuidModelBinder : IModelBinder {
public bool BindModel(HttpActionContext actionContext, ModelBindingContext bindingContext) {
var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
if (value == null) {
bindingContext.ModelState.AddModelError("guid", "The value is invalid");
return false;
}
var result = Guid.TryParse(value.ToString(), out _);
if (!result) {
bindingContext.ModelState.AddModelError("guid", "The value is invalid");
}
return result;
}
}
请帮忙。如何只显示我的消息
【问题讨论】:
-
标准错误信息有什么问题?看起来很清楚。
-
@Magnus 有关控制器的信息太多,请键入等。我想向客户显示更简单的消息
-
请查看此链接。它可能会帮助你。 enter link description here
标签: c# asp.net asp.net-mvc asp.net-web-api