首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >请帮助,开机自检时无法访问MVC下拉列表中的文本

请帮助,开机自检时无法访问MVC下拉列表中的文本
EN

Stack Overflow用户
提问于 2010-02-08 03:08:40
回答 8查看 1.4K关注 0票数 2

我有一个填充了电影列表的MVC下拉列表(Html.DropDownList)。当我执行表单提交时,我想同时检索标题(值域)、描述(文本域)。我可以访问标题(值域),但不能访问描述。我的代码示例如下。

//查看模型.....

公开课影院

{

代码语言:javascript
运行
复制
    public string CinemaName { get; set; }

    public SelectList MoviesList { get; set; }

    public string MoviesName { get; set; }

}

公共类电影

{

代码语言:javascript
运行
复制
    public string Title { get; set; }

    public string Description { get; set; }

}

//Controller

AcceptVerbs(HttpVerbs.Get)

代码语言:javascript
运行
复制
    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();

  }

//查看

“%>

代码语言:javascript
运行
复制
Home Page

代码语言:javascript
运行
复制
<% 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(); %>
代码语言:javascript
运行
复制
    }    {
EN

回答 8

Stack Overflow用户

发布于 2010-02-08 03:42:23

表单发布只发送选择列表的值。你应该不需要其他任何东西。你应该能够从值中得到你想要的东西。

票数 5
EN

Stack Overflow用户

发布于 2010-02-08 04:26:42

首先考虑为什么你也需要文本...

从技术上讲,dropdown Id应该足以识别控制器端的选项:)

票数 2
EN

Stack Overflow用户

发布于 2010-02-10 05:13:54

根据你在这个帖子中的一个答案...

我需要文本,因为要在下一个视图中显示描述。而且,我不需要单独调用db来通过提供Id来获取文本字段。我也不想为了获取文本字段而将列表存储在内存中。有没有Javascript或jQuery的解决方案?

在我看来,您提到的这个“下一个视图”的控制器应该能够创建更新/新的视图模型,并将其返回到“下一个视图”。我个人发现,随着未来的变化,这更容易审查和修改。

您可以添加一个隐藏字段或文本框,使其text属性在下拉列表发生更改时随时更改。然后,这个新字段也将发送回您的控制器。

如果由我决定,我的控制器将用新视图所需的信息填充我的ViewModel。在我看来,像你所请求的信息那样使用隐藏字段就像是一种代码味道。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2217896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档