Hi,
I have created a new custom view to enforce values in a grid dropdown.
This works well, however it is not picking up data annotations defined in my model. Initially it didn't even trigger the validation messages, however I've managed to fix this by added "required = "required" in the HTMLATTRIBUTES. I can't seem to find a way to add data-val-required property here.
Is there a way to make this work? I have seen an example here on custom editors but this seems to complicated for what I need (enforcing static values in the grid dropdown).
Hopefully someone can kindly point me in the right direction.
@model string @(Html.Kendo().DropDownListFor(m => m) .Name("CountryCode") .Value(Model) .SelectedIndex(0) //.DataValueField("CountryCode") //.DataTextField("CountryCode") .BindTo(new string[] { "GB", "CN" }) .HtmlAttributes(new { style = "font-size: 12px;" , required = "required", data_bind = "value: CountryCode" }) )
EDIT:
This is the code for the grid, and how I can referencing this custom dropdown list:
<script id="AppRegGrid" type="text/kendo-tmpl">
@(Html.Kendo().Grid<Myapp.Models.AppReg>()
.Name("AppReg_#=id#") // template expression, to be evaluated in the master context
.Columns(columns =>
{
columns.Bound(c => c.Number).Title("Registration Number").Width(120);
columns.Bound(c => c.CountryCode).Title("Country Code").Width(50).EditorTemplateName("AppRegistrationCountryCode");
columns.Bound(c => c.TypeCode).Title("Type Code").Width(50).EditorTemplateName("AppRegistrationTypeCode");
columns.Command(command => { command.Edit(); }).Width(200).HtmlAttributes(new { style = "text-align: center" }).HeaderHtmlAttributes(new { style = "text-align: center" });
})
.DataSource(dataSource => dataSource
.Ajax()
.Model (m => {
m.Id(l => l.AppRegNumID);
m.Field(l => l.AppRegNumID).Editable(false);
})
//.Sort(s => s.Add("ERPShipmentNumber").Ascending())
.PageSize(10)
.Read(read => read.Action("AppRegistrationNumbers_Read", "Admin", new { id = "#=id#" }))
.Update(update => update.Action("AppRegistrationNumbers_Update", "Admin"))
.Create(create => create.Action("AppRegistrationNumbers_Create", "Admin", new { id = "#=id#" }))
.ServerOperation(true)
)
.HtmlAttributes(new { style = "font-size: 12px;" })
.Height(200)
.ToolBar(tools => tools.Create())
.ToClientTemplate()
)
</script>
And this is by model:
public class AppReg { public int AppRegNumID { get; set; } [DisplayName("Registration Number")] [Required(ErrorMessage = "Please enter a valid registration number.")] public string Number { get; set; } [DisplayName("Country Code")] [StringLength(2)] [RegularExpression(@"^[a-zA-Z]+$", ErrorMessage = "2 letter ISO code only.")] [UIHint("AppRegistrationCountryCode")] [Required] public string CountryCode { get; set; } [Required] [DisplayName("Type Code")] [UIHint("AppRegistrationTypeCode")] public string TypeCode { get; set; } }