asp.net-mvc-4 – MVC 4 Web API中的默认参数值
我很好奇为什么ApiController处理操作的默认参数值与“常规”控制器不同.
这段代码工作正常,请求/ Test表示页面获取值1 public class TestController : Controller { public ActionResult Index(int page = 1) { return View(page); } } 当请求/ api / Values时,此代码不起作用.它失败了: “参数字典包含非可空类型’System.Int32’的参数’page’的空条目,用于方法’System.Collections.Generic.IEnumerable`1 [System.String]’MvcApplication1.Controllers中的Get(Int32)’ .Controllers.ValuesController’.可选参数必须是引用类型,可空类型,或者声明为可选参数.“ public class ValuesController : ApiController { public IEnumerable<string> Get(int page = 1) { return new string[] { page.ToString() }; } } 有关为何的原因的任何提示? 解决方法
尝试添加[FromUri]或[FromForm]参数属性.
public class ValuesController : ApiController { public IEnumerable<string> Get([FromUri]int page = 1) { return new string[] { page.ToString() }; } } Mike Stall在Webapi中有两篇关于参数绑定的好帖子,它在ASP MVC中不起作用.习惯的一个大问题是你只能在管道中读取一次请求体.因此,如果您需要读取多个复杂对象作为参数,则可能需要求助于ModelBinding by参数.当我在管道中早先阅读内容主体以进行日志记录时,我遇到了类似于你的问题,并且没有意识到上面的读取限制,并且必须使用我自己的自定义模型绑定器来解决. 在http://blogs.msdn.com/b/jmstall/archive/2012/04/16/how-webapi-does-parameter-binding.aspx解释模型绑定,然后建议一种使WebAPI模型绑定更像ASP MVC http://blogs.msdn.com/b/jmstall/archive/2012/04/18/mvc-style-parameter-binding-for-webapi.aspx的方法 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Asp.net身份密码散列
- 如何使用ASP.NET Core自定义Tag Helper中的视图?
- asp.net-mvc – 带有lambda表达式的ASP.net MVC Action URL
- asp.net – 如何设置显示内联的Div元素的固定宽度?
- asp.net-mvc – 如何处理MVC5中的配置和代码中的404错误?
- asp.net-mvc – 使用ASP.Net MVC中的模型绑定器更新父/子记
- asp.net-mvc – AuthorizeAttribute对象的生命周期是什么?
- asp.net – 如何根据属性值更新设计时UserControl接口?
- ASP.NET复选框与自定义设计
- asp.net-mvc – ASP.NET MVC中的通用基本控制器错误处理问题