嘿 我有三个IQueryable列表,我将它们连接成一个列表,显示在下拉框中。但是现在我想得到用户选择的id,因为有3个列表可供选择。感谢
示例:
IQueryable<Store> stores= _storeRepository.FindAll().OrderBy(c => c.Description);
var storeList = stores.ToSelectList("StoreId", "Description", viewModel.StoreId.ToString());
IQueryable<Product> products = _productRepository.FindAll().OrderBy(j => j.Name);
var productList = products.ToSelectList("ProductId", "Name", viewModel.ProductId.ToString());
var viewList = storeList.Concat(productList).ToList();
viewModel.Lookups = viewList; //display in dropdown
答案 0 :(得分:0)
如果您提问我有3个列表,用户选择一个我怎么知道他选择了哪个
回答: 你给所有三个相同的名字,价值将根据用户选择的那个而改变
如果您的问题是我想发送带有所选列表的id
值
答案:
服务器没有关于你的html属性的任何信息
只是映射到action方法参数名称的name属性和映射到参数值的值,你无法知道服务器中的id值和其他属性
示例:
<input type="text" name="Title" id="SomeValue"/>
将映射到:
public ActionResult Index(string Title)
服务器不会重现id =“SomeValue”
解决方案:
您可以做的是在每个项目下放置一个隐藏的字段,其中包含您想要的值
答案 1 :(得分:0)
而不是这样,连接后执行此操作
viewdata["viewList"] = storeList.Concat(productList).ToList();
并在此下拉列表中查看显示项目
<%= Html.DropDownList("viewlist_id", (List<SelectListItem>)ViewData["viewlist"])%>
现在使用提交按钮(如果想将数据发布到同一个动作,如果重定向到不同的动作,则使用具有路径值的actionlink,我在这里使用提交按钮)
<input type="submit" name="submit" value="submit" />
在您的操作中,您可以检索发布的数据
var dropdown_id = Request.Form["viewlist_id"];
通过这种方式,您将获得所选下拉列表的ID。感谢
答案 2 :(得分:0)
所以我想出了如何将不同列表的值组合到一个下拉列表中仍然能够访问其实际值或ID而无需连接或联合 - 如果有人感兴趣,代码会很多我会继续花点时间正确发布它。除此之外,谢谢大家提供您的建议和帮助。感谢
答案 3 :(得分:0)
所以这就是我解决问题的方法。在我的控制器文件中 - 在按钮单击后的我的Get方法中,这就是我所做的:
resultSummaryViewModel.Value = value;
resultSummaryViewModel.ReportFrame = new FramedViewModel();
if(value !="")
{
string viewValue = value.Substring(0, value.IndexOf("|"));
string viewType = value.Substring(value.IndexOf("|") + 1);
resultSummaryViewModel.ReportFrame.SourceURL =
WebPathHelper.MapUrlFromRoot(
string.Format(
"Reporting/ResultSummary.aspx?beginDate={0}&endDate={1}&Id={2}&viewType={3}",
resultSummaryViewModel.BeginDate, resultSummaryViewModel.EndDate, viewValue,
viewType));
}
var viewData = new Dictionary<string, string>();
viewData.Add("Schools", "|allschools");
viewData.Add("Classes", "|allclasses");
这也连接到我的显示页面aspx.cs,其中包含我用来填充的实际列表。