我正在使用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;
现在当我提交表单并签入数据库时,语音类型是索引而不是文本字符串。
你能帮我解决这个问题。
提前感谢您的回复。
答案 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更有意义。