C# 如何携带在Asp.net MVC中选择的下拉列表值

C# 如何携带在Asp.net MVC中选择的下拉列表值,c#,asp.net,asp.net-mvc,asp.net-mvc-3,razor,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Razor,嗨,我在索引页面中有下拉列表,用户需要在其中选择列表。值来自数据库。我把这个下拉值带到会话中,这样我就可以把它带到Httppost 以下是我在索引页中的代码: var activitydropdown = orderdata.uspApp_ActivityPageReportname(Convert.ToInt32(newid)).ToList(); List<SelectListItem> activitypage = new List<Sel

嗨,我在索引页面中有下拉列表,用户需要在其中选择列表。值来自数据库。我把这个下拉值带到会话中,这样我就可以把它带到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;

我可以看到文本和值,对于每个项目,selected为false。所以,我如何将从索引中选择的文本传送到httpost,这样当用户从下拉列表中选择列表时,它将存储该文本值。

它将在您的请求中可用,即

Request["DrpaActivity"]
然而,我强烈建议改用ViewModels,因为它们是类型安全的,更少的出错空间,更易于使用

如果创建视图模型,如下所示:

public class AViewModel
{
    public string DrpaActivity { get; set; }
    public List<SelectListItem> ActivitySelectList { get; set; }
}
然后在您的视图中,在顶部声明模型

@model AViewModel

按如下方式设置下拉列表:

public ActionResult Index()
{
   var model = new AViewModel();

   // set the select list i.e.
   model.ActivitySelectList = // get from db etc


   return View(model);      

}
@Html.DropDownListFor(m => m.DrpaActivity, Model.ActivitySelectList as List<SelectListItem>, "All", new { style = "margin-left:694px;margin-bottom:20px;", onchange = "submit();" })

嗨,我有这个。现在我有了用户在下拉列表中选择的id。你能告诉我如何根据这个id保存文本吗?我知道了。谢谢你的时间。我确实喜欢如果id==id,那么selected=true。对我来说似乎很容易。不错,是的。您可以在get呼叫中设置所选Id,它将自动选择该Id。祝其余的好运。“submit()”函数在哪里?如何通知模型更改?另外,您是否在自己的文件中定义模型?
@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);
}