Для проверки на стороне клиента asp mvc3 можно ли смешивать стандартный, ненавязчивый стиль по умолчанию с плагином проверки jquery?
Это форма в представлении:
@using (Html.BeginForm("", "", FormMethod.Post, new { id = "newRatingForm" }))
{
@Html.ValidationSummary(true)
<fieldset>
<legend>Rating</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Rate)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Rate)
@Html.ValidationMessageFor(model => model.Rate)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Email)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Email)
@Html.ValidationMessageFor(model => model.Email)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
Ненавязчивый прекрасно работает по умолчанию, используя обычные атрибуты проверки свойств модели.Цель состоит в том, чтобы заменить биты «model.Rate» в форме на [fyneworks] [1] плагин jquery star rating и использовать плагин проверки jquery только для этой части формы:
<span>Your Rating:</span>
<div id="ratingStars">
<input class="star {split:2}" type="radio" name="Rating" value="0.5"/>
<input class="star {split:2}" type="radio" name="Rating" value="1.0"/>
<input class="star {split:2}" type="radio" name="Rating" value="1.5"/>
<input class="star {split:2}" type="radio" name="Rating" value="2.0"/>
<input class="star {split:2}" type="radio" name="Rating" value="2.5"/>
<input class="star {split:2}" type="radio" name="Rating" value="3.0"/>
<input class="star {split:2}" type="radio" name="Rating" value="3.5"/>
<input class="star {split:2}" type="radio" name="Rating" value="4.0"/>
<input class="star {split:2}" type="radio" name="Rating" value="4.5"/>
<input class="star {split:2}" type="radio" name="Rating" value="5.0"/>
</div>
Iугнали действие отправки для формы и преобразовали значения формы в Json, чтобы выполнить ajax-запрос с:
$("#newRatingForm").submit(function (event) {
event.preventDefault();
if ($(this).valid()) {
newRatingSubmit();
}
});
function newRatingSubmit() {
//jquery ajax request using form values converted to Json
}
Кажется, что радио-кнопки нарушают форму, и код перехвата больше не работает, т.е. когда я нажимаю "отправить"к серверу не делается никаких запросов (наблюдение за консолью firebug), и форма просто исчезает.Опять же, все отлично работает только с простой формой mvc3.
Я пытался добавить правило проверки jquery для переключателей рейтинга, но, похоже, ничего не изменилось:
$("#newRatingForm").validate({
meta: "validate",
errorLabelContainer: "#ErrorDiv",
wrapper: "div",
rules:
{
Rating: {
required: true
}
},
messages:
{
Rating: {
required: 'A Rating required.'
}
},
onfocusout: false,
onkeyup: false,
//handle validation ok, POST submit
submitHandler: function (label) {
newRatingSubmit();
}
});
КакВ качестве альтернативы я могу проверить стандартную HTML-форму, используя плагин звездной оценки, используя плагин проверки jquery, и отправить его с помощью приведенного выше кода, но это не выглядит как «asp.net mvc».Например, мне тогда нужно 2 набора сообщений проверки - 1 для сервера, использующего атрибуты проверки, и другой для представления клиента.