2014-09-03 42 views
2

經過大量的嘗試和研究之後,最終以此結束。在MVC 4中爲會話設置@ Html.Dropdownlist 4

我在我的MVC 4應用程序中有幾個視圖(即索引和創建),並且都具有類似功能的下拉菜單。 我可以從索引中的下拉菜單中選擇一個值,並向前移動以創建。此外,我也可以從創建視圖中的下拉菜單中選擇值。

如果我從索引視圖中選擇任何值,那麼該值設置爲會話。我的問題是,如果我從索引視圖中選擇任何值,該值應攜帶到創建視圖,我嘗試過會話概念。

在我的兩個動作方法(指數創建(獲取))我能值列表綁定到其正常工作的下拉菜單。 。

指數視圖:

@Html.LabelFor(model => model.document.TeamId, "Team")   
@Html.DropDownListFor(model => model.document.TeamId, new SelectList(Model.ddlTeam, "Value", "Text"), "Select Team", new { id = "TeamID", onchange = "GetProjects()", @class = "form-control", UpdateTargetId = "atag" }) 
@Html.ValidationMessageFor(model => model.document.TeamId) 

現在所選擇的值被設定爲工作正常的會話(會話[ 「TeamId」] = someValue中)

然後在我的創建視圖,我檢查它(這是我從別人的帖子中發現,以分配會話值的dropdownlistfor)爲:

創建視圖:

@Html.LabelFor(model => model.document.TeamId, "Team", new { @class = "control-label col-sm-3" }) 
@if (Session["TeamId"] == null) 
{ 
    @Html.DropDownListFor(model => model.document.TeamId, new SelectList(Model.ddlTeam, "Value", "Text"), "Select Team", new { id = "TeamID", onchange = "GetProjects()", @class = "form-control", UpdateTargetId = "atag" }) 
} 
else 
{ 
    @Html.DropDownListFor(model => model.document.TeamId, new SelectList(Model.ddlTeam, "Value", "Text", Session["TeamId"]), "Select Team", new { id = "TeamID", onchange = "GetProjects()", @class = "form-control", UpdateTargetId = "atag" }) 
} 
@Html.ValidationMessageFor(model => model.document.TeamId) 

但是,即使在從索引視圖中選擇值之後,該值也沒有傳遞到創建視圖。

請建議我在哪裏做錯了或我應該如何使它工作? 在此先感謝。

回答

3

碰到類似的問題n我通過以下方式解決了我的問題: 首先填充創建actionmethod的GET方法的下拉列表(在您的情況下,它是ddlTeam並將其發送到視圖)。

[HttpGet] 
public ActionResult Create(int ID) 
{ 
    MyModel model = new MyModel(); 
    model.document.TeamId = Convert.ToInt32(Session["TeamId"]); 
    return view(model); 
} 

現在,一旦你的觀點被稱爲:

其發送到視圖之前再次使用您的會話值將其分配給您的獲取動作方法模型的屬性(在你的情況TeamId)你有沒有要這個屬性通過與填充下拉沿values.In你的情況會是這樣:

創建視圖

@if (Session["TeamId"] == null) 
{ 
    @Html.DropDownListFor(model => model.TeamId, new SelectList(Model.ddlTeam, "Value", "Text"), "Select Team", new { id = "TeamID", onchange = "GetProjects()", @class = "form-control", UpdateTargetId = "atag" }) 
} 
else 
{ 
    @Html.DropDownListFor(model => model.TeamId, new SelectList(Model.ddlTeam, "Value","Text", Model.TeamId), new { id = "TeamID", onchange = "GetProjects()", @class = "form-control" }) 
} 

試試這個,它應該解決你的問題,因爲它對我有效。請在發生問題時告訴我。

+0

位修改,但能夠弄清楚,併爲我工作..謝謝你的幫助。 – 2014-09-04 07:03:31