-1
我需要在我的頁面上有3個下拉列表。他們的工作方式如下:C#MVC不更新Html.DropDownListFor
用戶必須從第一個下拉菜單中選擇看到第二個下拉列表中。第二項和第三項工作是以同樣的方式進行的。
索引方法填充第一下拉列表:
$(function() {
$('#clientDropdown').change(function() {
var val = $(this).val();
$.ajax({
type: "POST",
url: '/Home/GetClientsProjectsDropDown',
data: { 'data': val },
success: function (data) {
},
error: function (data) {
}
});
});
});
哪個轉發到:
[HttpGet]
public ActionResult Index()
{
ViewBag.ClientDropdownList = GetClientsDropDown();
return View();
}
用戶後從第一個下拉選擇任何項目
[HttpPost]
public ActionResult GetClientsProjectsDropDown(string data)
{
if (!String.IsNullOrEmpty(data))
{
var result = new List<SelectListItem>();
var clientProjects = _clientService.GetClientsProjects(Int32.Parse(data));
foreach (var proj in clientProjects)
{
var item = new SelectListItem()
{
Value = proj.ProjectID.ToString(),
Text = proj.ProjectName
};
result.Add(item);
}
TempData["ProjectDropdownList"] = result;
return RedirectToAction("Index");
}
return PartialView();
}
這裏是指數.cshtml:
<div style="display: inline-flex; text-align: center;">
<div class="dropdown">
@Html.DropDownListFor(m => m.Client, ViewBag.ClientDropdownList as List<SelectListItem>, "Clients", new { @id = "clientDropdown", @class = "form-control" })
</div>
<div id="projectDropdown" class="dropdown" style="margin-left: 10px;">
@if (TempData["ProjectDropdownList"] != null)
{
@Html.DropDownListFor(m => m.Project, TempData["ProjectDropdownList"] as List<SelectListItem>, "Projects", new { @id = "projectDropdown", @class = "form-control" })
}
else
{
@Html.DropDownListFor(m => m.Project, new List<SelectListItem>(), "Projects", new { @id = "projectDropdown", @class = "form-control" })
}
</div>
<div class="dropdown" style="margin-left: 10px;">
@Html.DropDownListFor(m => m.Task, new List<SelectListItem>(), "Tasks", new { @id = "taskDropdown", @class = "form-control" })
</div>
</div>
爲什麼第二個下拉列表沒有被更新?
如果您的成功函數回調爲空,您如何期望更新下拉菜單?這也不是使「GET」操作成爲「POST」+返回部分視圖而不是原始數據的最佳方法。 –
你能幫我,我現在該怎麼辦? – miechooy
更好地返回Json對象而不是PartialView。然後,您的成功方法將循環返回的數據並構建DDL。 –