明らかに尋ねる危険性があります... 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
このリンクはAJAXフォームに役立ちました。http://msdn.microsoft.com/en-us/library/dd381533.aspx – Adventure