如何在mvc中维护表单的选定值?

时间:2015-10-26 15:25:24

标签: javascript jquery asp.net-mvc

我正在使用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()时得到的选项值。

一切正常,但我应该如何保持我之前选择的价值?因为它会随着每个表单提交而重置。

谢谢

3 个答案:

答案 0 :(得分:1)

您需要能够以某种方式保留先前选择的值。考虑使用本地存储或cookie。如果安全性不是问题,只需在用户的浏览器内存中创建本地存储对象,然后在页面加载时,查询该页面以重新填充选择。

https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API

答案 1 :(得分:1)

答案 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”类。