【问题标题】:MVC ddl value after postback回发后的 MVC ddl 值
【发布时间】:2012-01-13 15:01:53
【问题描述】:

我有一个 ddl,其中填充了 01-23 天的几个小时。这是用于预订设备项目的表格。小时填充到 db 字段。问题是这样的,当打开预订表单以更改 ddl 显示已预订小时的时间时,当更改并提交表单时,post 传递的值是来自 db 的初始值,而不是新选择的小时。

这是基本的代码片段。知道为什么新选择的 ddl 值没有传递给模型吗?

查看

<%= Html.DropDownList("ddl_Hour", Model.ddlHour,
 new { @class = "DropDown", style = "width: 40px” })%>

型号

private string _ddlHourSelectedValue = "0";
public SelectList ddlHour
        {
            get
            {
                return (new System.Web.Mvc.SelectList(_ddlHour, "intValue", "Text", Convert.ToInt32(_ddlHourSelectedValue)));
            }
        }
public string ddlHourSelectedValue
        {
            get
            {
                return _ddlHourSelectedValue;
            }
            set
            {
                _ddlHourSelectedValue = value;
            }
        }



param[6] = new SqlParameter("@Timeslot", ddlHourSelectedValue);

【问题讨论】:

    标签: model-view-controller ddl


    【解决方案1】:

    您视图中的字段名为“ddl_Hour” 但是您的模型中是否有同名的变量?否则 MVC 框架不会自动填充模型中的值。

    你可以通过两种方式来解决这个问题。

    1

    在您接受帖子的控制器方法中,您可以添加参数:

    FormCollection fc
    到方法。这个键值对集合将允许您从 post 数据中的字段中获取结果,如下所示:
    string selectedValue = fc["ddl_Hour"];

    2

    或者您可以修改模型以包含与下拉列表同名的变量,以便自动为您填充。

    公共字符串 ddl_Hour { get;放; }

    然后,您应该能够从该变量访问帖子中下拉列表选择的结果。

    【讨论】:

    • 抱歉,我的复制粘贴不正确,我已修改。该模型确实有变量 public SelectList ddlHour
    • 问题是这样的:&lt;%= Html.DropDownList("ddl_Hour", Model.ddlHour, new { @class = "DropDown", style = "width: 40px” })%&gt; 这会将下拉列表的选定值发布到您的应用程序,ID 为“ddl_Hour”。由于您的模型中没有同名的字符串变量,因此您不会自动使用它。如果您将变量 public string ddlHourSelectedValue 重命名为 ddl_Hour,您应该会发现您选择的值和发布的值将填充到您的模型中。
    猜你喜欢
    • 1970-01-01
    • 2017-02-11
    • 2015-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多