您好我在Index页面中有Dropdown,用户需要选择列表。值来自数据库。我把这个下拉值带到了会话中,所以我可以把它带到Httppost。
以下是我在索引页面中的代码:
var activitydropdown = orderdata.uspApp_ActivityPageReportname(Convert.ToInt32(newid)).ToList();
List<SelectListItem> activitypage = new List<SelectListItem>();
if (activitydropdown != null && activitydropdown.Count > 0)
{
foreach (var activityresults in activitydropdown)
{
activitypage.Add(new SelectListItem
{
Text = activityresults.name,
Value = activityresults.id.ToString(),
});
}
}
ViewData["activitydropdown"] = activitypage;
Session["activitydropdown"] = activitypage;
这是我的代码:
@using (Html.BeginForm("Index", "Automation", new { step = "2" }, FormMethod.Post, new { id = "frmIndex" }))
{
@Html.DropDownList("DrpaActivity", ViewData["activitydropdown"] as List<SelectListItem>, "All", new { style = "margin-left:694px;margin-bottom:20px;", onchange = "submit();" })
现在,当用户从下拉列表中选择列表时,我需要将该文本带到我的httpost索引。现在在httpost索引中,如果我看到这段代码,则在调试模式下:
var sessionlistautomation = Session["activitydropdown"];
我可以看到每个项目的文本和值以及选中的内容都是false。那么如何在这里选择从索引到httpost的文本,所以当用户从下拉列表中选择列表时,它会存储该文本值。
答案 0 :(得分:1)
它将在您的请求中提供,即
Request["DrpaActivity"]
但是我强烈建议使用ViewModels,因为它们是类型安全的,更少的错误空间和更容易使用。
如果您创建视图模型,如下所示:
public class AViewModel
{
public string DrpaActivity { get; set; }
public List<SelectListItem> ActivitySelectList { get; set; }
}
在你的索引中你可以这样返回:
public ActionResult Index()
{
var model = new AViewModel();
// set the select list i.e.
model.ActivitySelectList = // get from db etc
return View(model);
}
然后在您的视图中将模型声明在顶部
@model AViewModel
...
设置下拉列表:
@Html.DropDownListFor(m => m.DrpaActivity, Model.ActivitySelectList as List<SelectListItem>, "All", new { style = "margin-left:694px;margin-bottom:20px;", onchange = "submit();" })
然后,您可以按照以下方式在帖子中获取所选的下拉菜单:
[HttpPost]
public ActionResult Index(AViewModel model)
{
var isValid = model.DrpaActivity;
return View(model);
}