Поскольку AutoComplete
помощник не имеет атрибута DataValueField
, вам нужно использовать другой помощник HTML в качестве обходного пути для передачи другого значения свойства.Предположим, что у вашей viewmodel есть такая настройка:
public class ViewModel
{
// ID property example
public int PatientID { get; set; }
// other properties
}
Вы можете создать скрытое поле или текстовое поле только для чтения, чтобы хранить свойство идентификатора, упомянутое выше, в представлении Razor:
@Html.HiddenFor(m => m.PatientID)
Затем назначьте егоАтрибут value
из клиентского скрипта путем создания функции, которая читает индекс элемента из помощника по автозаполнению:
function selectPatient(e) {
var item = this.dataItem(e.item.index());
$('#PatientID').val(item.PatientID);
}
И, наконец, устанавливает имя функции, привязанное к атрибуту Events
:
@(Html.Kendo().AutoComplete()
.Name("Patient")
.Placeholder("Enter Name")
.DataTextField("TextField")
.Filter("contains")
.MinLength(3)
.HtmlAttributes(new { style = "width:100%" })
// add this line
.Events(ev => ev.Select("selectPatient"))
.DataSource(source => {
source.Read(read => {
read.Action("function", "controller")
.Data("onAdditionalData");
})
.ServerFiltering(true);
})
)
Следуя этой настройке, свойство PatientID
должно иметь идентификатор выбранного значения из помощника автозаполнения, когда пользователь отправил форму.