【发布时间】:2015-04-23 16:01:33
【问题描述】:
我的页面上有一个下拉菜单,显示类中硬编码的数据。
我有以下名为 state 的类:
public class State
{
public string StateCode {get; set;}
public string StateName { get; set; }
public static IQueryable<State> GetStates()
{
return new List<State>
{
new State{
StateCode="DE",
StateName="Delaware"
},
new State{
StateCode="NJ",
StateName="New Jersey"
},
new State{
StateCode="PA",
StateName="Pennsylvania"
}
}.AsQueryable();
}
}
我的 Home 控制器具有以下操作:
public ActionResult Index()
{
return View();
}
public ActionResult StateList()
{
IQueryable states = State.GetStates();
if (HttpContext.Request.IsAjaxRequest())
{
return Json(new SelectList(states,
"StateCode",
"StateCode"), JsonRequestBehavior.AllowGet
);
}
return View(states);
}
这是我的看法:
@section scripts {
<script type="text/javascript">
$(function () {
$.getJSON("/Home/States/List", function (data) {
var items = "<option>Please Select</option>"
$.each(data, function (i, state) {
items += "<option value='" + state.Value + "'>" + state.Text + "</option>";
});
$("States").html(items);
});
});
</script>
}
@using (Html.BeginForm())
{
<label for="States"></label>
<br />
<select id="States" name="States"></select>
}
我也将此添加到我的路由中:
routes.MapRoute(
"StatesList",
"Home/States/List",
new { controller = "Home", action = "StateList" }
);
我没有收到任何错误,但我的下拉框中也没有显示任何数据。我尝试调试我的控制器,我可以看到状态数据进入了动作中的对象状态。谁能帮我诊断一下问题?
【问题讨论】:
-
$("States").html(items);应该是$("#States").html(items);。 (但你真的应该阅读我在你现在删除的最后一个问题中给你的链接) -
@StephenMuecke 您的评论是一个答案,应该这样发布。
-
@ChrisPietschmann,在我的 TODO 列表中 :) - 还想解决 OP 代码的其他一些问题。