Ajax.BeginFormで問題が発生しています
私はこのようなものを眺めています
<% using (Ajax.BeginForm("ActionName", null , null, new { id = "FormName" }))
{%>
<input type="hidden" value = '<%= Html.Encode( Model.id) %>' name="id"/>
<textarea id="message" name=message rows="4" style="width: 90%">
</textarea>
<% }%}
そして、アクションメソッドはこのようなものです
[AcceptVerbs(HttpVerbs.Post)]
[Authorize]
public ActionResult ActionName(int id, string message)
{
....
}
'id'と 'message'をactionメソッドに渡そうとしています。 routeValuesに「null」を渡していますが、何を渡すかわかりません。理想的には、ルート値を必要としないオーバーロードを見つけようとしていましたが、actionNameとhtmlattributes(フォーム名用)を取得しましたが、見つかりませんでした。ビューモデルに「メッセージ」を追加したくないので、必要です。 jquery操作用のFormNameがあります。この問題を回避するための最良の方法は何ですか?
ああ、私は言及するのを忘れました、これは私がフォームを投稿する方法です
$.post($("#FormName").attr('action'), $("#FormName").serialize(),
function(result) {
$("#correspondingDiv").html(result);
}
);
このオーバーロードを使用します: http://msdn.Microsoft.com/en-us/library/dd470605.aspx
Ajax.BeginForm(
string "ActionName",
string "ControllerName",
new routevalues {id="IDValue",message="MyMessage"},
new AjaxOptions {OnBegin=[someFunction], OnFailure=[failureFunction] },
new { id = "FormName" }
)
試してください:
_ <% using (Ajax.BeginForm("ActionName", null))
{%>
<input type="hidden" value = '<%= Html.Encode( Model.id) %>' name="id"/>
<textarea id="message" name=message rows="4" style="width: 90%">
</textarea>
<% }%}
_
問題を複雑にしすぎていると思います。IDとメッセージはフォームのフィールドからポストバックに入力されるため、フォーム宣言で指定する必要はありません。本当にAjax応答が必要な場合を除いて、代わりにHtml.BeginForm()
を試してみることもできます。