C# 如何将字符串传递给控制器?
所以我试着这样做:C# 如何将字符串传递给控制器?,c#,asp.net-web-api,C#,Asp.net Web Api,所以我试着这样做: http://localhost:43751/api/doWork/asdfasfsaf 这里是控制器: public class DoWorkController : ApiController { public User GetWork(String input) { Dictionary<int, Work> users = DataObjects.Work.find(input); return users.Val
http://localhost:43751/api/doWork/asdfasfsaf
这里是控制器:
public class DoWorkController : ApiController
{
public User GetWork(String input) {
Dictionary<int, Work> users = DataObjects.Work.find(input);
return users.Values.First<Work>();
}
}
看来我要做的就是让它发挥作用:
public class DoWorkController : ApiController{
public User GetDoWork(String ID) {
Dictionary<int, Work> users = DataObjects.Work.find(input);
return users.Values.First<Work>();
}
}
公共类DoWorkController:ApicController{
公共用户GetDoWork(字符串ID){
字典用户=DataObjects.Work.find(输入);
返回users.Values.First();
}
}
因为MVC认为您引用的是不同的URL。您需要定义一个侦听HttpGet或HttpPost类型请求的方法:
[HttpGet]
public ActionResult doWork(string input) {
// do processing and return the selected user as a model back to the view
User user = YourGetUserMethod(input);
return View(user);
}
所以您可以将其作为:/api/doWork?input=asdfasfsaf调用
或者,如果您希望更改URL路由以接受URL的最后一部分作为参数,则需要向RouteConfig.cs文件中添加类似的内容:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "DoWork", action = "doWork", id = UrlParameter.Optional }
);
您可能希望了解有关路线映射的其他信息如果将
字符串输入
更改为字符串id
,会发生什么情况?您可以向我们展示您的Web API路由吗?@Ric实际上,使用Web API时,您通常不会在URL中包含操作名称。按照惯例,任何以“Get”开头的操作都将与任何“Get”请求匹配。@ChrisHardie,听起来很有趣。我将收回我的评论。@ChrisHardie在这种情况下他是否不想要/api/Work/asdfasfsaf
?在这种情况下,URL将是http://localhost:43751/api/DoWork/Work?input=asdfasfsaf
。
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "DoWork", action = "doWork", id = UrlParameter.Optional }
);