我正在使用for循环来加载选定的值
<form action="" target="_self" >
<select onchange="change(this.value)">
@for (var i = 0 ; i< Model.sites.Count; i++)
{
<option value="@Html.DisplayFor(x => Model.sites[i])">@Html.DisplayFor(x => Model.sites[i])</option>
}
</select>
<noscript><input type="submit" value="Submit"/></noscript>
</form>
通过javascript调用将其提交给我的控制器,在控制器中返回一个模型。
public ActionResult site_history_layout(string value)
{
var points= new points();
points.grades = new List<string>();
// etc.. code here
}
其中value是调用onchange()时得到的选项值。
一切正常,但我应该如何保持我之前选择的价值?因为它会随着每个表单提交而重置。
谢谢
答案 0 :(得分:1)
您需要能够以某种方式保留先前选择的值。考虑使用本地存储或cookie。如果安全性不是问题,只需在用户的浏览器内存中创建本地存储对象,然后在页面加载时,查询该页面以重新填充选择。
https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API
答案 1 :(得分:1)
这么多选择......
form
):https://api.jquery.com/jquery.ajax/ 答案 2 :(得分:0)
感谢您的建议!
我使用了ViewBag,尽管这是使用View的非传统方式,但它仍有效。
@for (var i = 0 ; i< Model.sites.Count; i++)
{
if (i == ViewBag.site_selected)
{
<option selected value="@Html.DisplayFor(x => Model.sites[i])">@Html.DisplayFor(x => Model.sites[i])</option>
}
else
{
<option value="@Html.DisplayFor(x => Model.sites[i])">@Html.DisplayFor(x => Model.sites[i])</option>
}
}
我使用了if语句,一旦它是我想要的值,它将插入“selected”类。