2011-01-08 6 views
0

明らかに尋ねる危険性があります... AJax.ActionLinkを使用してSelectListの現在の値をコントローラに戻す必要があります。それ、どうやったら出来るの?AJAXを使用してSelectList選択値を返す

以下は現在の私のビューの一部です。 "15"をSelectListの現在の値に置き換える必要があります。以下、代わりにAjax.ActionLinkのAjax.BeginFormを使用するように「答え」を使用して

<% If Model.ShoppingListNames IsNot Nothing Then%> 
    <%: Html.DropDownList("ShoppingListNames", Model.ShoppingListNames)%> 
    <%: Ajax.ActionLink("Add to List", "AdjustMaterials", "Docs", 
         New With {.userDocId = 15, .prodId = Model.ID, .quantity = 1}, 
         New AjaxOptions With {.OnSuccess = "handleUpdate"})%> 
<% End If%> 

は私がなってしまったビューの一部です。

 <% If Model.ShoppingListNames IsNot Nothing Then%> 
      <% Using Ajax.BeginForm("AdjustMaterials", "Docs", New With {.prodId = Model.ID}, New AjaxOptions With {.UpdateTargetId = "result-message"})%> 
       <%: Html.DropDownList("userDocId", Model.ShoppingListNames)%> 
       <input value ="Add to List" type ="submit"/> 
      <% End Using%> 
      <div id="result-message"></div> 
     <% End If%> 

以下はコントローラです。 prodIdパラメータはAjax.BeginFormの呼び出しで指定されますが、userDocIdパラメータはフォーム内のSelectListの現在の値によって指定されることに注意してください。

$(document).ready(function() { 
    $('#ShoppingListNames').change(function() { 
    var value = $('#ShoppingListNames > option:selected').attr('Value'); 
    if(value != '') { 
     $.ajax({ 
     type: 'GET', 
     contentType: 'application/json;charset=utf-8', 
     url: '<%: Url.Action("AdjustMaterials", "Docs", new {prodId = Model.ID, quantity = 1}) %>?=userDocId=' + value, 
     data: '', 
     dateType: 'json', 
     success: function (data) { 
      ... 
     } 
     } 
    } 
    } 
} 

とコントローラ:

public ActionResult AdjustMaterials(string prodId, string quantity, string userDocId) 
    { 
     ... 
     return Json("...", JsonRequestBehavior.AllowGet); 
    } 

JsonRequestBehavior.AllowGet私がGETを使用しているため、しかし、あなたが使用している場合ではないnecesary

<HttpPost()> 
Function AdjustMaterials(ByVal userDocId As Integer, ByVal prodId As Integer, 
    Optional ByVal quantity As Integer = 1, Optional ByVal itemTag As String = Nothing) As ActionResult 

' Do stuff... 
End Function 
+0

このリンクはAJAXフォームに役立ちました。http://msdn.microsoft.com/en-us/library/dd381533.aspx – Adventure

答えて

0

これを達成する1つの方法は、ドロップダウンリストをAJAXフォームに置き、AJAX linを置き換えることですkボタンを押してください。ボタンがクリックされると、AJAXを使用して目的のアクションにフォームを送信します。

+0

あなたの提案を答えとしてチェックしています。それは自分のスキルセットに合っており、正しい方向に私を指差しているからです。ありがとう! – Adventure

0

最高のは、jqueryのを使用するには、このようなものですPOST

+0

有望そうです...月曜日にチェックして、行く。ありがとう! – Adventure

+0

私に教えてください...それは行くのですか? – SebRojas

関連する問題