MVC - удаленная проверка события размытия
Я пытаюсь проверить правильность введенного на веб-странице кода, читая базу данных бэкэнда, когда текстовое поле теряет фокус. Я могу выполнить код в контроллере, но по какой-то причине объект модели не передается в метод контроллера.
Определение текстового поля...
<div class="form-group">
@Html.LabelFor(m => m.HSDRepCode)
@Html.TextBoxFor(m => m.HSDRepCode, new { placeholder = "Enter your HSD Rep code...", @class = "contact-name"})
@Html.ValidationMessageFor(m => m.HSDRepCode)
</div>
Код JavaScript для события размытия...
<script type="text/javascript">
$("#HSDRepCode").blur(function () {
var model = '@Html.Raw(Json.Encode(Model))';
$.ajax({
url: "/CRM/ValidateHSDRep",
type: "POST",
data: $("model").serialize(),
dataType: "application/json"
}).done(function( model ) {
$("#HSFirstName").val(model.HSFirstName);
$("#HSLastName").val(model.HSLastName);
});
});
</script>
Код контроллера CRM...
public ActionResult ValidateHSDRep(LeadInfo leadInfo)
{
HSDRep hsdRep = new HSDRep();
hsdRep = CRMModels.ValidateHSDRepCode(leadInfo.HSDRepCode);
return Json(leadInfo);
}
Код контроллера выполняется, но объект leadInfo становится пустым после ввода HSDRepCode и перехода к следующему текстовому полю.
Почему модель не передается в код контроллера?
Спасибо гэри
1 ответ
Переменная модели не имеет метода serialize(), этот метод предназначен только для использования с элементами форм. Попробуйте удалить одинарную кавычку из этой строки: var model = @Html.Raw(Json.Encode(Model)); Теперь отправьте объект модели в качестве data: model.
<script type="text/javascript">
$("#HSDRepCode").blur(function () {
var model = @Html.Raw(Json.Encode(Model));
if(model == null) {
model = {};
}
model.HSDRepCode = $(this).val();
$.ajax({
url: "/CRM/ValidateHSDRep",
type: "POST",
data: model,
dataType: "application/json"
}).done(function (model) {
$("#HSFirstName").val(model.HSFirstName);
$("#HSLastName").val(model.HSLastName);
});
});
</script>