Jam*_*rgy 0 routing asp.net-mvc-4 asp.net-web-api
尝试在Visual Studio 2010中使用MVC RC4 Web API设置新站点,它似乎不起作用:参数值永远不会传递给方法.
据我所知,我完全按照此处的描述完成了所有工作:http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-in-aspnet-web-api
路线配置:
routes.Clear();
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new {
id = RouteParameter.Optional
}
);
Run Code Online (Sandbox Code Playgroud)
下面是常规的MVC路线,我也试过完全删除它以查看是否存在一些冲突,但它没有任何区别.
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new {
controller = "Home",
action = "Index",
id = UrlParameter.Optional
}
);
Run Code Online (Sandbox Code Playgroud)
测试控制器:
public class TestController : ApiController
{
[HttpGet]
public int Double(int value)
{
return value * 2;
}
}
Run Code Online (Sandbox Code Playgroud)
网址: http://localhost:1505/api/test/double/4
The parameters dictionary contains a null entry for parameter 'value' of
non-nullable type 'System.Int32' for method 'Int32 Double(Int32)' in
'MyAppName.Controllers.TestController'. An optional parameter must be a
reference type, a nullable type, or be declared as an optional parameter.
Run Code Online (Sandbox Code Playgroud)
哎呀.这很简单,不是吗?但似乎没有任何结果导致参数被映射.对于它,我也尝试过
http://localhost:1505/api/test/double?id=4
Run Code Online (Sandbox Code Playgroud)
没有不同.如果我使参数接受空值,例如
public int Double(int? value)
Run Code Online (Sandbox Code Playgroud)
它运行,但value
始终为null.
我究竟做错了什么?
在您的路线中,您可以{id}
在行动中使用value
MVC并按名称匹配"事物"(路线值,查询字符串值等).
所以名称应该对齐:
所以将路由更改为:
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{value}",
defaults: new {
value= RouteParameter.Optional
}
);
Run Code Online (Sandbox Code Playgroud)
它将与URL一起使用: http://localhost:1505/api/test/double/4
注意:如果您离开,则value
RouteParameter.Optional
需要更改操作签名中的类型int?
.
或者您可以更改您的操作方法签名:
[HttpGet]
public int Double(int id)
{
return id * 2;
}
Run Code Online (Sandbox Code Playgroud)
或者您可以保留它,因为它只是使用此URL:
http://localhost:1505/api/test/double?value=4
归档时间: |
|
查看次数: |
4943 次 |
最近记录: |