C# 配置路由asp.net webapi
我正在使用asp.net webapi后端构建angularJS应用程序。在我的routeconfig文件中,我有C# 配置路由asp.net webapi,c#,asp.net,asp.net-mvc,angularjs,asp.net-web-api,C#,Asp.net,Asp.net Mvc,Angularjs,Asp.net Web Api,我正在使用asp.net webapi后端构建angularJS应用程序。在我的routeconfig文件中,我有 routes.MapRoute( name: "default", url: "{*url}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); 这个很好用。任何被调用的Url都会返回Home/Index视图(我仅有的视图)到应用程
routes.MapRoute(
name: "default",
url: "{*url}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
这个很好用。任何被调用的Url都会返回Home/Index视图(我仅有的视图)到应用程序,angularJS会计算出是否存在查询字符串,并计算出要显示的状态
我在WebApi中有基本的Get、Put、Post和Delete方法,我可以很好地调用它们。例如
public class CompanyController : ApiController
{
private CompanyService _service;
public CompanyController(CompanyService service)
{
_service = service;
}
public async Task<IHttpActionResult> Get()
{
...
return Ok(model);
}
public async Task<IHttpActionResult> Get(int id)
{
...
return Ok(model);
}
public async Task<IHttpActionResult> Post(CompanyModel model)
{
...
return Ok();
}
public async Task<IHttpActionResult> Put(Company model)
{
...
return Ok();
}
public async Task<IHttpActionResult> Delete(CompanyModel model)
{
...
return Ok();
}
}
为什么这不起作用??当试图使用url localhost/api/company/1/10/a通过邮递员调用它时,我发现一个资源找不到错误,其中1=page,10=pageSize,a=term
这可能是一个简单的答案,但对MVC来说是新的,所以仍然需要学习。1-您使用的是Get方法,这意味着您可以通过Url传递搜索选项,因此您可以创建一个搜索选项对象,如:
public class SearchOptions
{
public string Term{get; set;}
public int Page {get; set;}
public int PageSize {get; set;}
}
然后你可以把你的方法改成这样
public async Task<IHttpActionResult> Get(string term, int page, int pageSize) {
...
return Ok(results);
}
[HttpGet]
[Route("api/blabla/SearchSomething")]
public async Task<IHttpActionResult> Get([FromUri]SearchOptions searchOptions) {
...
return Ok(results);
}
希望对您有所帮助。如果您正在使用Web API 2,请使用Route属性。谢谢你。我去看看。在您的示例中,您将如何调用该get方法?我不确定fromurl部分是什么?[FromUri]告诉模型绑定器从查询字符串而不是从请求正文构造搜索选项,因此您需要将搜索选项与querystring一起传递。你看得很清楚。谢谢你
[HttpGet]
[Route("api/blabla/SearchSomething")]
public async Task<IHttpActionResult> Get([FromUri]SearchOptions searchOptions) {
...
return Ok(results);
}
api/blabla/SearchSomething?term=somevalue&page=1&pageSize=10