0
我有一個下拉列表,我需要異步反應。我無法讓Ajax.BeginForm實際執行異步回發,它只會執行完整的回發。如何異步處理下拉列表更改事件?
using (Ajax.BeginForm("EditStatus", new AjaxOptions { UpdateTargetId = "divSuccess"}))
{%>
<%=Html.DropDownList(
"ddlStatus",
Model.PartStatusList.OrderBy(wc => wc.SortOrder).Select(
wc => new SelectListItem
{
Text = wc.StatusDescription,
Value = wc.PartStatusId.ToString(),
Selected = wc.PartStatusId == Model.PartStatusId
}),
new { @class = "input-box", onchange = "this.form.submit();" }
)%>
<div id='divSuccess'></div>
<%
}
當用戶從列表中選擇一個項目,但是它完全回發和控制器方法的返回值是屏幕上的唯一輸出。我期待控制器方法的返回值顯示在「divSuccess」中。
[AjaxAwareAuthorize(Roles = "Supplier_Administrator, Supplier_User")]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult EditStatus(PartPropertiesViewModel partPropertiesViewModel)
{
var part = _repository.GetPart(partPropertiesViewModel.PartId);
part.PartStatusId = Convert.ToInt32(Request.Form["ddlStatus"]);
_repository.SavePart(part);
return Content("Successfully Updated Status.");
}
OK,這得到回發異步的,但不幸的是,請求對象不再有我的下拉列表。我該如何獲得控制器中下拉列表的值。是的,我是ASP.Net MVC的新手,我已經被分配到一個寫得不好的應用程序,現在我必須解決這個問題。 –
@Payton Byrd,我已經更新了我的答案,以說明如何使用'$ .post'方法的第二個參數將值傳遞給AJAX請求:'{ddlStatus:status}'。 –
比你的答案要多得多。我從中學到了很多東西,並且現在代碼完美運行。 –