2009-07-15 4 views
2

次の設定で何が問題なのかよくわかりません。私はいくつかのレコードをリストしたViewを持っており、それぞれにレコードの値を変更するためのドロップダウンがあります。私はAJAXなしですべての作業をしていましたが、ドロップダウンの束を変更してSubmitボタンをクリックしなければなりませんでした。私はドロップダウンの選択肢をすぐに保存できるように変更したかったのです。ASP.NET MVC AJAXが簡単な呼び出しで新しいページを返します

マイ(MyTableというのタイプのIEnumerable()の)閲覧ストリップダウン:

<script src="../../Scripts/MicrosoftAjax.debug.js" type="text/javascript"></script> 
<script src="../../Scripts/MicrosoftMvcAjax.debug.js" type="text/javascript"></script> 

<% For Each item In Model%> 
<% Using Ajax.BeginForm("Update", New AjaxOptions With {.UpdateTargetId = "test"})%> 
<%=Html.Hidden("id", item.id)%> 
<%=item.name%>: 
<%=Html.DropDownList("ActionCode", New SelectList(ViewData("actions"), "Value", "Text", item.ActionCode), New With {.onchange = "this.form.submit();"})%> 
<span id="test"></span> 
<br/> 
<% End Using%> 
<% Next%> 

を私の更新コントローラ:

<AcceptVerbs(HttpVerbs.Post)> _ 
Function Update(ByVal id As Integer, ByVal ActionCode As String) As ActionResult 
    'Update would happen here 
    Return Content(id & ": " & ActionCode) 
End Function 

ドロップダウンの変更がトリガするために何が起こるしたいことはありますコントローラを更新しますが、おそらく何も返されません。データベースを更新してユーザーを移動させてください。空白のページにコンテンツの値が表示されている(つまり、「123:ABC」)。それは正しいid/codeの組み合わせなので、アップデートが正しく発射されているように見えます。単にhtmlを消去するだけです。

明らかに私はAJAXが正しく動作するように正しく戻っていませんが、このパターンは私が見つけることができる例と一致するようですので、どこが間違っているのか分かりません。どんな助けでも大歓迎です。

答えて

2

おそらくフォームタグを入れ子にしていますか?

私は、このシナリオでは、送信ボタンは、実際にあなたが期待するように外側の形ではなく、内側のいずれかで発生することがフォームの送信をトリガクリックすることを発見:

<form id="outer"> 
    <form id="inner"> 
    <input type="submit" value="submit" /> 
    </form> 
</form> 

私もAを使用することをお勧めしますFirefoxのFirebugプラグインのようなツール。それは、あなたがajaxの活動と反応を見るのに役立ちます。

+0

いいえ、ネストされたフォームタグはありません。私はFirebugのことを試してみるつもりです。ありがとう。 – gfrizzle

関連する問題