Dans ASP.NET MVC, nous avons pour les actions. Y a-t-il quelque chose de semblable comme
qui devrait acheminer vers/api/contrôleur ?
Réponses
Trop de publicités?Le ApiController a une propriété appelée Url qui est de type Système.Web.Http.Le routage.UrlHelper qui vous permet de construire des url pour les contrôleurs d'api.
Exemple:
public class ValuesController : ApiController
{
// GET /api/values
public IEnumerable<string> Get()
{
// returns /api/values/123
string url = Url.Route("DefaultApi", new { controller = "values", id = "123" });
return new string[] { "value1", "value2" };
}
// GET /api/values/5
public string Get(int id)
{
return "value";
}
...
}
Cette UrlHelper n'existe pas ni dans vos vues, ni dans les contrôleurs standard.
Mise à JOUR:
Et pour faire du routage à l'extérieur d'un ApiController vous pouvez effectuer les opérations suivantes:
public class HomeController : Controller
{
public ActionResult Index()
{
string url = Url.RouteUrl(
"DefaultApi",
new { httproute = "", controller = "values", id = "123" }
);
return View();
}
}
ou à l'intérieur d'un point de vue:
<script type="text/javascript">
var url = '@Url.RouteUrl("DefaultApi", new { httproute = "", controller = "values", id = "123" })';
$.ajax({
url: url,
type: 'GET',
success: function(result) {
// ...
}
});
</script>
Avis de l' httproute = ""
route jeton qui est important.
Évidemment, cela suppose que votre Api route est appelée DefaultApi
dans votre RegisterRoutes méthode en Global.asax
:
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);