ASP.NET MVC下拉列表值字段xxx必须是一个数字?

时间:2012-07-09 12:40:29

标签: asp.net-mvc drop-down-menu

模型

public partial class TblMusteriler { 
    public TblMusteriler() { 
       this.TblSayaclar = new HashSet<TblSayaclar>(); 
    } 
    public System.Guid sno { get; set; } 

    [Display(Name = "Müşteri No")] 
    [Required(ErrorMessage = "Müşteri numarası boş geçilemez.")] 
    public string musteri_no { get; set; } 

    [Display(Name = "Müşteri Adı")] 
    [Required(ErrorMessage = "Müşteri adı boş geçilemez.")] 
    public string musteri_adi { get; set; }

控制器

public ActionResult SayacEkle()
{
    var musteriler = entity.TblMusteriler.Select(x => new { x.sno, x.musteri_adi });
    ViewBag.musteri_id = new SelectList(musteriler.AsEnumerable(), "sno", "musteri_adi");

    return ContextDependentView(new TblSayaclar());
}

查看

@Html.DropDownList("sno", (SelectList)ViewBag.musteri_id, "--Müşteri Seçiniz--")

HTML输出

<select data-val="true" data-val-number="The field sno must be a number." data-val-required="The sno field is required." id="sno" name="sno" class="input-validation-error"><option value="">--Müşteri Seçiniz--</option>

我不应该将sno类型更改为数字。它必须是guid类型。如何在下拉列表中使用guid类型作为值?

感谢。

1 个答案:

答案 0 :(得分:1)

如果要覆盖错误消息,可以使用可为空的Guid和Required属性:

[Required(ErrorMessage = "Please select a valid SNO")]
public System.Guid? sno { get; set; }

如果您希望默认元数据提供程序隐式添加可空类型的Required属性,您可以将AddImplicitRequiredAttributeForValueTypes中的Application_Start属性设置为false:

DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;