У меня есть следующий сценарий:Url.Action поставляет неправильный результат, когда RouteAttribute используется
[RoutePrefix("MvcApi/MyData")]
public class MyDataController : Controller
{
[Route("GetAsSelectionListBySiteId/{siteId}")]
public async Task<ActionResult> GetAsSelectionListBySiteId(int siteId)
{
var items = await IoC.Instance.GetInstance<IDataProvider>().GetBySiteIdAsync(ParallelDataAccessor, siteId);
return Json(items.Select(s => new KeyValuePair<int, string>(s.Identifier, s.DisplayName)).ToArray(), JsonRequestBehavior.AllowGet);
}
public static class Routes
{
public static RouteValueDictionary GetAsSelectionListBySiteId(int siteId)
{
return new RouteValueDictionary()
.AddReturn(nameof(siteId), siteId)
.AddReturn("area", "MvcApi");
}
}
}
Когда я использую
@Url.Action("GetAsSelectionListBySiteId", "MyData", MyDataController.Routes.GetAsSelectionListBySiteId(5))
в представлении это будет отображаться как
MvcApi/MyData/GetAsSelectionListBySiteId?siteId=5 <- 404 error
, когда я действительно нуждаюсь в нем, как является
MvcApi/MyData/GetAsSelectionListBySiteId/5 <- 200 ok
Является ли это ошибка в @ Url.Action? Есть ли способ повлиять на него?
http://stackoverflow.com/questions/26365464/url-action-map-a-wrong-link-from-route-attribute – Dbl
Однако Resharper не предлагает поддержку Routejumps. Так что мне это не нравится, потому что рефакторинг/коразвивание будет хуже – Dbl