Попробуйте добавить обратный вызов OnBegin к AjaxOptions, и это должно сработать.
function validateForm() {
return $('form').validate().form();
}
@using (Ajax.BeginForm("Create", "Part", null, new AjaxOptions { UpdateTargetId = "update_panel", OnBegin = "validateForm" }))
...
Если это не сработает, альтернативным решением может быть отправка формы с использованием jQuery. Это было бы моим предпочтительным решением.
<div id="result"></div>
@using (Html.BeginForm())
{
<h3>New @Model.PartType</h3>
<p>Serial Number:
<strong>
@Html.EditorFor(model => model.SerialNumber)
@Html.ValidationMessageFor(model => model.SerialNumber)
</strong>
</p>
<p> Name:
<strong>
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</strong>
</p>
...... more relatively boiler plate code here......
<p>
<input type="submit" class="btn primary" value="Save Part"/>
</p>
}
Функция jQuery / JS для отправки формы
$(function () {
$('form').submit(function () {
$.validator.unobtrusive.parse($('form')); //added
if ($(this).valid()) {
$.ajax({
url: this.action,
type: this.method,
data: $(this).serialize(),
success: function (result) {
$('#result').html(result);
}
});
}
return false;
});
});