В документации к Action (HtmlHelper, String, String, Object) (или версии RouteValueDictionary) указано, что «Параметр RouteValues объединяется с исходными значениями маршрута и переопределяет их».
https://learn.microsoft.com/en-us/dotne ... b-mvc-html -childactionextensions-action(system-web-mvc-htmlhelper-system-string-system-string-system-object)
Однако я понял, что это не очень хорошо сочетается с необязательными параметры - скажем, у вас есть что-то вроде
Код: Выделить всё
[ChildActionOnly]
public PartialViewResult BigBanner(string bannername, string title = "")
где заголовок — необязательный параметр метода контроллера, который генерирует сложный баннерный блок. Если заголовок предоставляется вызывающей страницей, то все в порядке. Если он опущен, то предполагается, что дочернее действие не будет отображать заголовок. Однако если кто-то создаст URL-адрес с ?title=SomethingBad, он будет отображен на странице. В лучшем случае это позволяет отображать произвольный контент, в худшем - это основа для XSS-атаки в зависимости от того, как использовались параметры.
Есть ли способ использовать Html.Action без слияния словаря объекта/значения маршрута с параметрами уровня страницы для предотвращения такого рода внедрения контента - это кажется довольно небезопасным по умолчанию.
Подробнее здесь:
https://stackoverflow.com/questions/787 ... ion-in-asp