У меня есть пчелы, проходящие через различные MVC tutorials, а также сделанные простые. Все они, похоже, обращаются к двум типам uri. Что делать, если мы хотим использовать что-то другое, кроме «контроллера» и «id»?Можем ли мы создать пользовательский uri для вызова различных функций метода контроллера
также как он узнает, какая функция называется? УИР является /api/products
но функция, которая возвращает значение является public IEnumerable<Product> GetAllProducts()
Ниже приведен пример контроллера
using ProductsApp.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Web.Http;
namespace ProductsApp.Controllers
{
public class ProductsController : ApiController
{
Product[] products = new Product[]
{
new Product { Id = 1, Name = "Tomato Soup", Category = "Groceries", Price = 1 },
new Product { Id = 2, Name = "Yo-yo", Category = "Toys", Price = 3.75M },
new Product { Id = 3, Name = "Hammer", Category = "Hardware", Price = 16.99M }
};
public IEnumerable<Product> GetAllProducts()
{
return products;
}
public IHttpActionResult GetProduct(int id)
{
var product = products.FirstOrDefault((p) => p.Id == id);
if (product == null)
{
return NotFound();
}
return Ok(product);
}
}
В этом случае я могу назвать только две функции в веб-браузере
Я хочу позвонить в Ури, что-то по линии
/api/products/foo
являются U известно, что вы пишете API, а не веб-приложение? –
ASP.NET MVC отличается от WebForms, потому что он согласуется с конфигурацией. Если вы выполняете настраиваемую маршрутизацию, вы уходите от этого соглашения, что в некоторых случаях не рекомендуется. В любом случае, стандартным соглашением MVC является/[ControllerClass- "Controller"]/FunctionName/FunctionParameterValue или/[ControllerClass- "Controller"]/FunctionName? FunctionParameter = FunctionParameterValue. Есть ли причина, по которой вы используете настраиваемую маршрутизацию? Многие люди делают это по уважительной причине. Просто убедитесь, что ваша причина оправдана. –