Использование именованного маршрута в Form.Begin в ASP.NET MVC - PullRequest
2 голосов
/ 24 января 2009

Есть ли способ принудительного использования именованного маршрута в ASP.NET MVC при использовании Form.Begin. Я все больше и больше узнаю о маршрутизации и боюсь, что это может быть очень хрупким, если вы просто измените порядок или параметры будут иметь значения по умолчанию.

<% Form.Begin(...) %> <!-- no overload for providing a route name --%> 

Кажется, что для именованного маршрута не возникает перегрузки для начала формы, поэтому лучшее, что я мог придумать, это:

<form action="/Products/Command/ViewProduct" method="post"> 

Мне интересно, является ли эта пропущенная перегрузка недосмотром (бета-версия прямо сейчас), есть ли для этого причина или альтернативный способ генерации URL.

Я пытался использовать RouteLink и встраивать его в тег Form, но RouteLink создает мне полный HTML-код для тега <A>, который не годится.

action="<%= Ajax.RouteLink("Update Status", "product-route-short", new { action = "GetStatus", sku = "" }, new AjaxOptions { UpdateTargetId = "status" })%>"

Какие альтернативы у меня есть для генерации URL-адреса из именованного маршрута.

Стоит ли сообщать об этой отсутствующей перегрузке как о проблеме?

1 Ответ

2 голосов
/ 24 января 2009

Если вам нужно сгенерировать URL для именованного маршрута, вы можете использовать Url.RouteUrl(), вам просто нужно поместить контроллер и действие в объект значений маршрута следующим образом:

<%= Url.RouteUrl("NamedRoute", new { controller="Controller", action="Action", foo="Bar" ... }) %>

Что касается добавления перегрузки, у многих из этих помощников так много разных перегрузок, что они начинают конфликтовать и становятся неоднозначными. Например, рассмотрим следующие перегрузки

public string BeginForm(string actionName, string controllerName)
public string BeginForm(string actionName)
public string BeginForm(string routeName, string actionName) // Uh oh!

1-я и 3-я имеют одинаковые подписи, поэтому они недействительны.

Вы всегда можете создать свой собственный помощник по формам в качестве метода расширения HtmlHelper, если вам часто приходится использовать именованные маршруты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...