Подтвердить что ты не робот

Html.BeginForm() с абсолютным URL?

Мне нужно, чтобы действие POST было абсолютным URL (например, http://www.cnn.com). Есть ли способ использовать Html.BeginForm() помощник и передать ему url?

4b9b3361

Ответ 1

Метод BeginForm имеет несколько перегрузок. Чтобы установить атрибут action в теге формы с требуемым URL-адресом, вам необходимо использовать следующую перегрузку BeginForm:

BeginForm(String, String, FormMethod, IDictionary<String, Object>)
// here are the parameter names:
BeginForm(actionName, controllerName, method, htmlAttributes)

Поскольку вы хотите отправить сообщение на внешний сайт, нет необходимости устанавливать actionName и имя_контроллера, просто оставьте их как null.

@Html.BeginForm(
   null, null, FormMethod.Post, new {@action="http://cnn.com/post"}
)

Это не будет кодировать параметр действия.

Ответ 2

Все, что делает метод HtmlHelper.BeginForm, поможет вам создать тег <form>, предназначенный для локального контроллера. Если вы отправляете на внешний сайт, просто напишите фактический тег <form>, т.е.

<form action="http://www.example.com/someaction" method="post">
    Actual form content in here
</form>

Вот и все. Формы MVC не похожи на формы в ASP.NET WebForms, где у вас есть куча полей ViewState и полей и других магических элементов. Это обычные обычные HTML-формы.

Ответ 3

проверьте исходный код mvc, метод html.beginform не только создаст только собственную HTML-форму, но также добавит sth для проверки клиента, которая просто мне нужна,

if (htmlHelper.ViewContext.ClientValidationEnabled) 
{
    htmlHelper.ViewContext.FormContext.FormId = tagBuilder.Attributes["id"];
}

так что это будет проблема, я просто напишу собственное расширение