我想实现以下内容: 组合框/ DropDownListFor在视图中命名为“target”。它包含(例如)A和B作为选择。 在同一视图中,我有另一个名为“medium”的组合框。其含量取决于所选择的目标,例如: - 如果target =“A”,组合框“medium”将显示1和2作为选择。 - 如果target =“B”,组合框“medium”将显示3和4作为选择。
我已成功实现了组合框“目标”,但我不知道如何实现与“目标”相关的组合框“中”。如果我没有错,那么逻辑应该是:获得所选择的目标 - >找到与targetid相关的所有媒介 - >用结果填充combobox“medium”。
以下是我当前视图的片段(组合框“目标”):
<div class="editor-label">
@Html.LabelFor(model => model.TargetId)
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.TargetId, (ViewData["targets"] as SelectList).MakeSelection(Model.TargetId))
</div>
提前谢谢。
答案 0 :(得分:2)
您可以使用第一个drop的javascript OnChange进行ajax调用,以根据选项A或B获取值。
然后使用您从控制器获得的JSon响应,您填写下拉列表“Medium”
JS文件中的执行以下操作:
$(document).ready(function () {
$("#target").change(function () { GetMediumValues("#target", "#medium"); });
});
function ClearDrop(objSource) {
$(objSource).empty();
}
function GetMediumValues(objSource, objDest) {
var url = '/mySite/GetMediumValues/';
$.getJSON(url, { id: $(objSource).val() }, function (data) {
ClearDrop(objDest);
$.each(data, function (index, optionData) {
$(objDest).append("<option value='" + optionData.Value + "'>" + optionData.Text + "</option>");
});
});
}
在控制器中
public ActionResult GetMediumValues(string id)
{
int myId = 0;
int.TryParse(id, out myId);
var select = new SelectList(repository.GetMediumValues(myId), "Id", "Name");
return Json(select, JsonRequestBehavior.AllowGet); //allow get needed to allow get calls
}