从会话中选择下拉列表值

时间:2017-09-11 14:13:49

标签: javascript asp.net-mvc asp.net-mvc-4

我的html文件中有一个下拉列表。

如果会话中存在会话对象,我希望自动选择位置(在下拉列表中)。

我希望你理解我的问题。我是mvc的新手。感谢

@if (Session["Location"] == null)
{
                <select class="form-control" id="DeliveryLocation" name="DeliveryLocation">
                    <option value="" selected disabled hidden>Choose Your Location</option>
                    <option value="Aundh">Aundh</option>
                    <option value="Baner">Baner</option>
                    <option value="Balewadi">Balewadi</option>
                    <option value="Pimpri">Pimpri</option>
                    <option value="Nilakh">Nilakh</option>
                    <option value="Wakad">Wakad</option>

                </select>
}
else
{
    // i want code here to select value from dropdown as it is in location session
   <pre> <select class="form-control" id="DeliveryLocation" name="DeliveryLocation">
                    <option value="" selected disabled hidden>Choose Your Location</option>
                    <option value="Aundh">Aundh</option>
                    <option value="Baner">Baner</option>
                    <option value="Balewadi">Balewadi</option>
                    <option value="Pimpri">Pimpri</option>
                    <option value="Nilakh">Nilakh</option>
                    <option value="Wakad">Wakad</option>

                </select>
}

2 个答案:

答案 0 :(得分:0)

100%适用于您的情况。

<select class="form-control" id="DeliveryLocation" name="DeliveryLocation">
    <option @(Session["location"] == null ? "selected disabled hidden": "")>Choose location</option>
    <option @((string)Session["location"] == "USA" ? "selected" : "")>USA</option>
    <option @((string)Session["location"] == "Praga" ? "selected" : "")>Praga</option>
    <option @((string)Session["location"] == "Paris" ? "selected" : "")>Paris</option>
    <option @((string)Session["location"] == "China" ? "selected" : "")>China</option>
    <option @((string)Session["location"]== "GB" ? "selected":"")>GB</option>
</select>

答案 1 :(得分:0)

您应该使用SelectList和MVC的HTML Helpers来构建您的下拉列表。如果你是MVC的新手,这看起来很令人生畏,但它为你简化了很多东西。

在当前加载此页面的操作方法中:

ViewBag.DeliveryLocation = new SelectList(new[]
{
    new { Text = "Aundh", Value = "Aundh" },
    new { Text = "Balewadi", Value = "Balewadi" },
    new { Text = "Pimpri", Value = "Pimpri" }
}, "Value", "Text", Session["Location"]);

SelectList类有一堆重载。因此,上面的代码创建了一个SelectList,其中Value属性将绑定到选项的value属性,Text将显示为option的文本。下一个参数是selectedValue。在您的情况下,您需要设置Session["Location"]中的任何内容。

您还可以创建SelectListItem的列表并将其放在ViewBag中。

然后在你看来,

@Html.DropDownList("DeliveryLocation")

就是这样。所以这里发生的是,Razor使用<select>生成name="DeliveryLocation"元素。然后它在DeliveryLocation中查找ViewBag属性。我们已在控制器中设置此选项,并相应地设置选项。

假设您已使用ViewBag.DeliveryLocationList在控制器中设置SelectList。然后你必须告诉剃刀在哪里寻找SelectList。由于ViewBag是动态对象,因此您必须将其强制转换。

@Html.DropDownList("DeliveryLocation", (IEnumerable<SelectListItem>)ViewBag.DeliveryLocationList,  "Choose Your Location", new { @id= "DeliveryLocation" })

在这里你已经硬编码了位置。在实际应用程序中,通常会从数据库中获取像Locations这样的选项值。如果您使用HTML帮助程序,则无需进行大的更改。


This link from Microsft docs has some great examples for beginners

相关问题