【问题标题】:Dropdownlist in ASP.NET MVC2ASP.NET MVC2 中的下拉列表
【发布时间】:2010-09-26 14:17:13
【问题描述】:

在我的模型中,我有这个:

 public class CustomerModel
    {
        public Customer Customer { get; set; }
        public Language Language { get; set; }

        public IList<Language> Languages { get; set; }

        public CustomerModel()
        {
            Language = new Language();
        }
    }

在我看来,我有这个:

<%: Html.DropDownList("Id", new SelectList(Model.Languages, "Id", "Code"))%>

这是工作

但我希望在提交时将 Model.Language.Id 设置为所选值 我试过了,但不行:

<%: Html.DropDownList(m => m.Language.Id, new SelectList(Model.Languages, "Id", "Code"))%>

更新1: 我使用了这个解决方案,可以正常工作

<%: Html.DropDownList("Language", 
new SelectList(ViewData.Model.Languages, "Id", "Code")) %>

当我选择客户时,我希望看到根据客户语言而变化的语言,我这样做了:

<%: Html.DropDownList("Language", new SelectList(ViewData.Model.Languages, "Id", "Code", ViewData.Model.Customer.Language.Id)) %> 

什么也没发生,我仍然看到列表的第一种语言,而不是客户语言。控制器中的数据是正确的

谢谢,

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-2


    【解决方案1】:

    使用强类型的 html 助手 DropDownListFor

    <%: Html.DropDownListFor(m => m.Language.Id, new SelectList(Model.Languages, "Id", "Code"))%>
    

    【讨论】:

    • 我添加了一条评论见“Update1”
    • Model.Languages 是否包含 Model.Customer.Language 对象?
    • Model.Languages 有可能的语言(在我的例子中是 3 个) Model.Customer.Language 不为空,并且具有 3 个之一的值
    • 那么我唯一能想象的就是 model.customer.language 正在某个地方被重置。你能放控制器代码吗
    【解决方案2】:

    这对我来说很好用(如果你想传递一个 lambda 表达式,你需要使用 Html.DropDownListFor 助手):

    型号:

    public class Language
    {
        public int Id { get; set; }
        public string Code { get; set; }
    }
    
    public class CustomerModel
    {
        public Language Language { get; set; }
        public IList<Language> Languages { get; set; }
    
        public CustomerModel()
        {
            Language = new Language();
            Languages = new List<Language>
            {
                new Language { Id = 1, Code = "en" },
                new Language { Id = 2, Code = "fr" },
            };
        }
    }
    

    控制器:

    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View(new CustomerModel());
        }
    
        [HttpPost]
        public ActionResult Index(CustomerModel model)
        {
            return View(model);
        }
    }
    

    查看:

    <% using (Html.BeginForm()) { %>
        <%: Html.DropDownListFor(
            x => x.Language.Id, 
            new SelectList(Model.Languages, "Id", "Code")
        ) %>
        <input type="submit" value="OK" />
    <% } %>
    

    【讨论】:

    • 我添加了一条评论见“Update1”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-04
    • 2011-10-29
    • 1970-01-01
    • 2013-08-23
    • 1970-01-01
    相关资源
    最近更新 更多