2017-09-11 22 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