如何在数据库中存储DropDownListfor Text字段值?

时间:2014-10-15 16:51:32

标签: c# asp.net-mvc-4 umbraco7

我正在使用Umbraco网站,我正在使用MVC4和Umbraco 7.1.8。我创建了一个模型,一个控制器和一个局部视图。 我有一个下拉列表,当用户在该下拉列表中选择值时,它应该存储该文本字符串。而不是文本它存储索引。以下是我的代码。

我的模特: -

    public class PhoneType
    {
        public int typeid { get; set; }
        public string Value { get; set; }
    }

    public IEnumerable<PhoneType> PhonetypeOptions =
    new List<PhoneType>
    {
        new PhoneType {typeid = 0, Value = "Mobile"},
        new PhoneType {typeid = 1, Value = "Home"},
        new PhoneType {typeid = 2, Value = "Office"}
    };


    [Required, Display(Name = "Phone Number Type")]
    public string PhoneNumberType { get; set; }

我的部分视图Html: -

<div class="fieldWrapper">
            @Html.LabelFor(m => m.PhoneNumberType)
            @Html.DropDownListFor(m => m.PhoneNumberType, new            SelectList(Model.PhonetypeOptions,"typeid","Value",Model.PhonetypeOptions.First().typeid))
            @Html.ValidationMessageFor(m => m.Email, "Please Enter Email", new {@class = "error"})
        </div>

我的控制器代码: -

       member.getProperty("phoneNumberType").Value = model.PhoneNumberType;

现在当我提交表单并签入数据库时​​,语音类型是索引而不是文本字符串。

你能帮我解决这个问题。

提前感谢您的回复。

1 个答案:

答案 0 :(得分:0)

就像我解释了注释一样,在数据库中插入id是有意义的。

如果您决定重命名某个值,则会遇到麻烦。

如果您确实想存储文本值,只需将该值重复为id。

public class PhoneType
{
    public string typeid { get; set; }
    public string Value { get; set; }
}

public IEnumerable<PhoneType> PhonetypeOptions =
new List<PhoneType>
{
    new PhoneType {typeid = "Mobile", Value = "Mobile"},
    new PhoneType {typeid = "Home", Value = "Home"},
    new PhoneType {typeid = "Office", Value = "Office"}
};

但同样,将它保存为Id更有意义。