我有一个填充了电影列表的MVC下拉列表(Html.DropDownList)。当我执行表单提交时,我想同时检索标题(值域)、描述(文本域)。我可以访问标题(值域),但不能访问描述。我的代码示例如下。
//查看模型.....
公开课影院
{
    public string CinemaName { get; set; }
    public SelectList MoviesList { get; set; }
    public string MoviesName { get; set; }}
公共类电影
{
    public string Title { get; set; }
    public string Description { get; set; }}
//Controller
AcceptVerbs(HttpVerbs.Get)
    public ActionResult Index()
    {
        Cinema _cinema = GetViewModel();
        ViewData.Model = _cinema;
        return View();
    }
    public IEnumerable<Movie> GetMovieList()
    {
        List<Movie> list = new List<Movie>();                        
        list.Add(new Movie(){ Title = "1", Description = "Batman" });
        list.Add(new Movie() { Title = "2", Description = "Metrix" });
        list.Add(new Movie() { Title = "3", Description = "Jaws" });
        return list;           
    }
    public Cinema GetViewModel()
    {
        var cinema = new Cinema();
        cinema.CinemaName = "Village";
        cinema.MoviesList = new SelectList(GetMovieList(), "Title", "Description", "Jaws");
        return cinema;
    }
    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Update(Cinema _cinema)
    {
        //Here I need both value and the text  field from the selected item in the drop down
        string movieName = _cinema.MoviesName;
        return View();
  }//查看
“%>
Home Page
<% using (Html.BeginForm("Update", "Home"))
   { %>
<p>
    To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">
        http://asp.net/mvc</a>.
</p>
<%= Html.TextBox("CinemaName", Model.CinemaName)%>
<%= Html.DropDownList("MoviesName", Model.MoviesList)%>
<input type="submit" value="Submit" />
<% } Html.EndForm(); %>    }    {发布于 2010-02-08 03:42:23
表单发布只发送选择列表的值。你应该不需要其他任何东西。你应该能够从值中得到你想要的东西。
发布于 2010-02-08 04:26:42
首先考虑为什么你也需要文本...
从技术上讲,dropdown Id应该足以识别控制器端的选项:)
发布于 2010-02-10 05:13:54
根据你在这个帖子中的一个答案...
我需要文本,因为要在下一个视图中显示描述。而且,我不需要单独调用db来通过提供Id来获取文本字段。我也不想为了获取文本字段而将列表存储在内存中。有没有Javascript或jQuery的解决方案?
在我看来,您提到的这个“下一个视图”的控制器应该能够创建更新/新的视图模型,并将其返回到“下一个视图”。我个人发现,随着未来的变化,这更容易审查和修改。
您可以添加一个隐藏字段或文本框,使其text属性在下拉列表发生更改时随时更改。然后,这个新字段也将发送回您的控制器。
如果由我决定,我的控制器将用新视图所需的信息填充我的ViewModel。在我看来,像你所请求的信息那样使用隐藏字段就像是一种代码味道。
https://stackoverflow.com/questions/2217896
复制相似问题