내 MVC 5 웹 응용 프로그램에서 대체 라우팅을 구현하려고합니다. http://example.com/account/testparam
: URL을 타격 할 때 위대한 작품을MVC 대체 매개 변수로 대체 라우팅이 실패 함
namespace MyMvcProject.Web.Controllers
{
[RoutePrefix("account")]
public class AccountController : Controller {
[Route("{param}")]
[Authorize]
public ActionResult Index(string param = null) {
...
:
나는 컨트롤러 코드가 있습니다. 그러나 선택 매개 변수로 param
값을 가질 수 있기를 바랍니다.
[Route("{param}")]
을 [Route("{param}*")]
으로 변경하려고했지만 Index()
방법을 입력하지 않았습니다. 나는 또한 [Route("{param:string=Test}")]
로 변경하려고했지만 string
이라는 용어로 라우팅 런타임 오류가 발생합니다.
내 RoutConfig.cs
에는 다음이 포함
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{param}",
defaults: new { controller = "Home", action = "Index", param = UrlParameter.Optional }
);
}
사람이 내가이 대체 라우팅 구문을 사용하여 선택적 매개 변수를 가지고 Index()
강제 수있는 방법 어떤 생각을 가지고 있습니까? 그것은 내 애플 리케이션의 다른 부분에서 매우 유용하므로, RoutePrefix
과 Route
데코레이터를 유지하고 싶습니다.
UPDATE는
난 아직도이 알아 내려고 노력하고있어 그래서 public ActionResult Index(int id)
에 [Route("{param:int=0}")]
내 경로 장식 내 생성자를 변경 예상대로 작동 (즉, http://example.com/account
동작합니다는 http://example.com/account/0
것처럼 입력되었습니다. . 내가로 장식 변경할 때이 난 단지 string
데이터 유형을 사용하여, 원하는 것을 정확히
입니다 : [Route("{id:string=\"\"}")]
및 public ActionResult Index(string id)
에 생성자를 내가 런타임 오류 참조 :
The inline constraint resolver of type 'DefaultInlineConstraintResolver' was unable to resolve the following inline constraint: 'string'.
주문에 대한 유용한 정보. – Nicholi