私はカスケードされたドロップダウンリストを持っており、最初のドロップダウンリストで選択されたアイテムに関して2番目のドロップダウンリストにアイテムを表示します.
namespace MvcSampleApplication.Controllers
{
public class CascadeListController : Controller
{
public ActionResult Index()
{
List<SelectListItem> state = new List<SelectListItem>();
state.Add(new SelectListItem { Text = "State1", Value = "State1" });
state.Add(new SelectListItem { Text = "State2", Value = "State2" });
ViewBag.StateName = new SelectList(state, "Value", "Text");
return View("BasicDrop");
}
public JsonResult Districtlist(string Id)
{
var districttype = from s in CascadingDropdowns.GetDistrictList()
where s.StateName == Id
select s;
return Json(new SelectList(districttype.ToArray(), "StateName", "DistrictName"), JsonRequestBehavior.AllowGet);
}
}
}
これは表示用です
@Scripts.Render("~/bundles/jquery")
<script type="text/javascript">
$(function () {
$("State").change(function () {
$.getJSON('/CascadeListController/Districtlist' + $('#State').val(), function (data) {
var items = '<option>Select a District</option>';
$.each(data, function (i, districttype) {
items += "<option value = '" + districttype.Value + "'>" + districttype.Text + " </option> ";
});
$('#District').html(items);
});
});
});
</script>
@model MvcSampleApplication.Models.CascadingDropdowns
@{
ViewBag.Title = "BasicDrop";
}
<h2>BasicDrop</h2>
@using (Html.BeginForm())
{
<div>
<fieldset>
<legend>DropDownlists</legend>
@Html.Label("State")
@Html.DropDownList("State", ViewBag.StateName as SelectList,"Select A state", new {id= "State"})
@Html.Label("District");
<div class="mycombo">
<select id ="District" name ="Distrct"></select>
</div>
</fieldset>
</div>
}
最初のドロップダウンリストでアイテムを選択すると、2番目のドロップダウンリストにアイテムが表示されず、幅を増やすために2番目のドロップダウンリストのdivプロパティを使用しました「70px」のように幅を指定しましたが、それも機能しません..
誰かがこれについて何か提案をしてくれませんか...よろしくお願いします。