我对MVC很新,我在webforms中遇到了一个非常简单的问题。我在表单上有一个下拉列表。我有一个按钮,可以加载一个模态窗体,允许用户动态地将项添加到数据库中。然后,我需要使用表的新内容更新下拉列表。我意识到我需要ajax才能做到这一点,但我对如何启动更新非常困惑!
我的表单中包含以下下拉列表。
<div class="form-group form-group-sm required">
@Html.LabelFor(m => m.ListingData.Transmission, new { @class = "col-md-4 control-label" })
<div class="col-md-8">
@Html.DropDownListFor(m => m.ListingData.Transmission, (SelectList)ViewBag.TransmissionList, new { @class = "form-control"} )
@Html.ValidationMessageFor(m => m.ListingData.Transmission, "", new { @class = "text-danger" })
<p class="form-text"><a data-modal='' href='@Url.Action("QATransmission", "Admin", new { ListingId = Model.ListingData.ListingId}))' id=''>Quick Add Manufacturer</a></p>
</div>
</div>
我在主页面中使用此ajax来调用加载控制器中的列表代码。
$(function () {
$.ajax({
type: "GET",
url: "Admin/LoadTransmissionList",
data: JSON,
cache: false,
success: function (data) {
$.each(data, function (index, value) {
$('#Transmission').append('<option value="' + value.TransmissionText + '">' + value.TransmissionText + '</option>');
});
}
});
});
这是我的控制器代码:
[HttpPost]
public JsonResult LoadTransmissionList()
{
var lstTrans = db.Transmissions.ToList();
List<SelectListItem> list = new List<SelectListItem>();
foreach (Transmission p in lstTrans)
{
list.Add(new SelectListItem() { Value = p.TransmissionText.ToString(), Text = p.TransmissionText.ToString() });
}
return Json(list, JsonRequestBehavior.AllowGet);
}
我有一个模态表单,它有一个用于输入新列表项的文本框。我需要保存到DB,然后工作!我无法想出重新加载列表框内容部分。任何帮助!
谢谢!
答案 0 :(得分:0)
1)让你的代码像这样改变
success: function (data) {
$('#ListingData_Transmission').html("")
$.each(data, function (index, value) {
$('#ListingData_Transmission').append('<option value="' + value.TransmissionText + '">' + value.TransmissionText + '</option>');
});
}
希望现在能够正常工作
2)将表单设置为部分视图,并在将数据保存到数据库时重新加载。
如果有任何问题,请告诉我