2017-09-11 23 views
-1

我在我的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

你可以进一步添加JavaScript向下如的document.getElementById( 'DeliveryLocation')值= '@Session [ “位置”]'。 – Steve

回答

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> 
+0

你的代码属于'else'分支 - 'if'正在检查它是否为空。 –

+0

兄弟不工作...在下面的行中出现错误: – user4584148

+0

user4584148

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用name="DeliveryLocation"生成一个<select>元素。然后它在ViewBag中查找DeliveryLocation属性。我们已经在我们的控制器中设置了这个选项,并且相应地设置选项。

比方说,您在控制器中设置了ViewBag.DeliveryLocationListSelectList。那么你必须告诉剃须刀在哪里寻找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