1
当页面加载时,一切正常。但是当我提交表单时,我的下拉列表在页面刷新后丢失了先前选择的项目。如何在表单提交后保留级联下拉菜单选项?
如何修改我的函数以初始化下拉列表并保留之前选定的项目(如果存在)。
这是我与初始化我dropdownlists javascript的观点:
@model Models.Book
@{
ViewBag.Title = "Index";
}
@section scripts {
<script type="text/javascript">
$(function() {
$.getJSON("/Home/Books/List", function(data) {
var items = "<option>--------------------</option>";
$.each(data, function(i, book) {
items += "<option value='" + book.Value + "'>" + book.Text + "</option>";
});
$("#Books").html(items);
});
$("#Books").change(function() {
$.getJSON("/Home/Chapters/List/" + $("#Books> option:selected").attr("value"), function(data) {
var items = "<option>--------------------</option>";
$.each(data, function(i, chapter) {
items += "<option value='" + chapter.Value + "'>" + chapter.Text + "</option>";
});
$("#Chapters").html(items);
});
});
});
</script>
}
@using (@Html.BeginForm("ListChapterContent", "Home"))
{
<div id="header">
<label for="Books">Books</label>
<select id="Books" name="Books"></select>
<label for="Chapters">Chapters</label>
<select id="Chapters" name="Chapters" onchange="this.form.submit();"></select>
</div>
这里是我的模型:
public class Book
{
public string Translator{ get; set; }
public string Edition{ get; set; }
public List<Book> Books{ get; set; }
public int SelectedBook { get; set; }
public int SelectedChapter { get; set; }
}
您需要使用HtmlHelpers来生成你的控件 - 例如@ Html.DropDownListFor(m => m.Books,Model.BookList)',并且在返回视图之前应该在控制器中生成选项。 –
选定的图书和所选章节正在我的表单提交中的控制器中的模型上设置。这个信息可以在我的视图中访问,因为它是一个强类型的视图,但我不知道如何处理它。 – Daniel
我试过使用HtmlHelpers,但我可以注意到它们是作为级联dropdownlist工作的,所以我在YouTube上的一个例子中找到了这个函数,并用它来代替。 – Daniel