我的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>
}
答案 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