POSTアクションを絶対URLに設定する必要があります(例: http://www.cnn.com )。Htmlを使用する方法はありますか。 BeginForm()ヘルパーとそれにURLを渡しますか?
BeginFormメソッドにはいくつかのオーバーロードがあります。フォームタグに目的のURLでaction属性を設定するには、BeginFormの次のオーバーロードを使用する必要があります。
BeginForm(String, String, FormMethod, IDictionary<String, Object>)
// here are the parameter names:
BeginForm(actionName, controllerName, method, htmlAttributes)
外部サイトに投稿したいので、actionNameとcontrollerNameを設定する必要はなく、nullのままにしておきます。
@Html.BeginForm(
null, null, FormMethod.Post, new {@action="http://cnn.com/post"}
)
これは、アクションパラメータをエンコードしません。
HtmlHelper.BeginForm
メソッドが行うことは、ローカルコントローラーをターゲットとする<form>
タグを作成するのに役立つことだけです。外部サイトに投稿する場合は、実際の<form>
タグを書き出すだけです。
<form action="http://www.example.com/someaction" method="post">
Actual form content in here
</form>
これですべてです。 MVCフォームは、ViewStateやイベントフィールド、その他の魔法の要素がたくさんあるASP.NETWebFormsのフォームとは異なります。それらは通常の古いHTMLフォームです。
mvcソースコードを確認してください。html.beginformメソッドは、ネイティブhtmlフォームのみを作成するだけでなく、クライアント検証用にsthを追加します。
if (htmlHelper.ViewContext.ClientValidationEnabled)
{
htmlHelper.ViewContext.FormContext.FormId = tagBuilder.Attributes["id"];
}
だからそれは問題になるでしょう、私は自分の拡張機能を書くだけです