16

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);
                               }
                            );
4

2 に答える 2

32

このオーバーロードを使用します: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" }
)
于 2010-04-08T13:24:56.413 に答える
0

試す:

  <% 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とメッセージはフォームのフィールドからポストバックで入力されるため、フォーム宣言でそれらを指定する必要はありません. Html.BeginForm()本当に Ajax 応答が必要でない限り、代わりに試してみることもできます。

于 2010-04-08T13:20:51.373 に答える