選擇在我的MVC5控制,我填兩份名單在我的ViewModel像這樣:隱藏一個控制和顯示了另一個當用戶在MVC5和EF6
public async Task<ActionResult> Create()
{
var db = new ApplicationDbContext();
var model = new RegisterViewModel()
{
RegionsList = db.Regions.ToList().Select(x => new SelectListItem()
{
Selected = false,
Text = x.Name,
Value = x.Name
}),
CompanyList = db.Companies.ToList().Select(x => new SelectListItem()
{
Selected = false,
Text = x.Name,
Value = x.CompanyId.ToString()
})
};
return View(model);
}
然後,在我看來,我展示公司作爲一個DropDownList和地區爲一組的複選框:
<div class="form-group">
@Html.LabelFor(model => model.CompanyList, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(c => c.SelectedCompanyId, Model.CompanyList, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
@Html.Label("Assign the user to one or more regions", new { @class = "control-label col-md-2" })
<span class=" col-md-10">
@foreach (var item in Model.RegionsList)
{
<input type="checkbox" name="SelectedRegionNames" value="@item.Value" checked="@item.Selected" class="checkbox-inline" />
@Html.Label(item.Value, new { @class = "control-label" })
}
</span>
</div>
該工程確定,但它是一個有點亂,因爲顯示所有公司的所有區域。我想隱藏一組複選框,直到選中一個公司,然後隱藏公司下拉列表並顯示region.CompanyId ==所選的區域列表。
任何人都可以教我如何做到這一點嗎?
如果你只是在瀏覽器中顯示/隱藏UI的一部分,那麼我會建議使用JavaScript來代替服務器端代碼。基本上,現在將所有內容都渲染到頁面上,並將其設置爲默認情況下不可見。當用戶與頁面元素交互時,顯示應該顯示的元素。 – David 2014-10-08 18:37:21
我不認爲我只是顯示/隱藏,因爲RegionList的內容需要根據從CompanyList中選擇的內容進行更改。 – davecove 2014-10-08 19:25:37
它會發回服務器並重新呈現頁面嗎?如果是這樣的話,我想你的視圖可以綁定到模型上的過濾列表,而不是整個列表。如果過濾器標準在模型上可用,那麼可能只是創建基於這些標準過濾列表的只讀屬性? – David 2014-10-08 19:27:03