을 제거ASP.NET MVC는 컨트롤러 QueryString을에게 작업
public ActionResult News(DateTime? FromDate, DateTime? ToDate)
{
IList<Model.MonthGroupNewsEntry> monthGroupNewsEntries = new services.NewsEntryService(new Data.SqlNewsEntryRepository()).GetMonthGroupNewsEntries();
IList<Model.NewsEntry> newsEntries = new Services.NewsEntryService(new Data.SqlNewsEntryRepository()).GetNewsEntriesWithinDateRange(FromDate,
return View(new Models.NewsViewModel(monthGroupNewsEntries, newsEntries));
}
을 올린 사람 :
<%= Html.ActionLink(b.MonthName + " " + b.Year.ToString() + " (" + b.EntryCount.ToString() + ")", "News", new { FromDate = b.FromDate, ToDate = b.ToDate}) %>
그러나 때 아래에서 URL을 사용하여 컨트롤러를 제거하려고합니다 :
routes.MapRoute(
"Default",
"{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional });
404 리소스를 찾을 수 없습니다. 오류가 발생합니다.
참고 : 클래스의 다른 메서드는 제대로 작동하지만 매개 변수 또는 "id"가 없으며 두 DateTime에서 호출되는 메서드 일뿐입니다. URL에서 컨트롤러를 제거 할 때 실패하는 매개 변수
업데이트 된 답변을 주셔서 감사합니다. 그러나 제가 만든 유일한 변화는 위의 "routes.MapRoute"에서 "{controller} /"텍스트를 제거하는 것입니다. 맞춤법 오류 등은 없습니다. 이것은 또한 MVC 3를 사용
또한 : Charx의 제안을 사용하여 :
routes.MapRoute(
"SpecificAction",
"{action}/{FromDate}/{ToDate}",
new { controller = "ControllerName", id = UrlParameter.Optional });
나는 더 이상 404 오류가 없지만,이 준 -로 인해 "400 잘못된 요청을"는 '/' s이므로 dd-MM-YYYY로 날짜를 다시 형식화했습니다.
<%= Html.ActionLink(b.MonthName + " " + b.Year.ToString() + " (" + b.EntryCount.ToString() + ")", "News", new { FromDate = b.FromDate.ToString("dd-MM-yyyy"), ToDate = b.ToDate.ToString("dd-MM-yyyy")}) %>
더 이상 404가 아니기 때문에 FromDate는 잘 인식되지만 ToDate는 null로 처리됩니다.
최종 : 두 날짜의 유형을 문자열로 변경하고 메서드에서 datetime으로 캐스팅했습니다. 이제 두 매개 변수가 모두 정상적으로 처리됩니다. 아마도 첫 번째 매개 변수의 time 요소를 찾고 있었을 것입니다. 두 번째는 무시했다.
"id"매개 변수를 필요로하는 메소드는 이제 누구나 감사 할 수 있다면 "NewsEntry/5"보다는 querystring (NewsEnrty? ID = 5)으로 사용하는 것 같습니다. 그렇지 않으면 질문 대답했다 - 다시 Chanx에게 감사한다.
을 컨트롤러}'를 사용하고 있습니까? 방금 두 수준의 깊은 URL을 만들려고합니까? – Charx
사이트는 매우 간단합니다. URL에있는 컨트롤러가 과도한 것처럼 보이기 때문에 하나의 컨트롤러 만있을 수 있습니다. URL에서 제거 할 수는 없지만 필요한 클래스를 확인하기 위해 라우팅에 여전히 사용할 수 있습니까? – user1907097
내 답변을보고 그게 효과가 있는지 알려주세요. – Charx