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