TL; DR
Как Url.RouteUrl
отображает одно из свойств объекта routeValues
на свойство с другим именем в параметре объекта метода действия?
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ
Я работаю над устаревшим ASP. NET MVC веб-сайтом на работе (написано на VB. NET ...) и пытаюсь понять, как конкретный звонок на Url.RouteUrl
работает. Вот соответствующий код:
Вид
rel="<%:Url.RouteUrl("UserContributionsMediaGetPhotosForViewer", New With {.resourceType = "Review", .resourceIndex = 0, .authorId = Model.AuthorId, .reviewId = Model.Id })%>"
Определение маршрута
routes.MapRouteLowercase(
"UserContributionsMediaGetPhotosForViewer",
"UserContributionsMediaGetPhotosForViewer/{resourceType}/{resourceIndex}/{authorId}/{reviewId}",
New With {.controller = "UserContributionsMedia", .action = "GetPhotosForViewer", .resourceIndex = "0"},
Nothing,
routingNamespace,
RouteSection.PartDetail
)
Метод действия
Public Class UserContributionsMediaController
<AcceptVerbs(HttpVerbs.Post)>
Function GetPhotosForViewer(ByVal userContributionsMediaRequest As UserContributionsMediaRequest) As ActionResult
'Do stuff and return an ActionResult
End Function
End Class
Определение класса параметра действия
Public Class UserContributionsMediaRequest
Public Property ResourceIndex As Short
Public Property ReviewId As String
Public Property ReviewerId As String
Public Property ResourceType As String
End Class
Так как же MVC отображает authorId
в вызове RouteUrl
на ReviewerId
свойство параметра объекта метода действия? Я думал, что все с маршрутизацией в основном основано на порядке параметров, но там нет порядка , если параметр метода действия является объектом, а не отдельными примитивными параметрами. Я должен упомянуть, что есть также ModelBinder
для класса UserContributionsMediaRequest
, но я не вижу, как привязка модели повлияет на RouteUrl
.
Небольшое разъяснение будет высоко ценится!