असल में मुझे नियंत्रक (WebApi) से लौटाए गए मॉडलस्टेट त्रुटियों को दिखाने में परेशानी हो रही है। एमवीसी 4, jQuery और नॉकआउट का उपयोग करना। उम्मीद है कि आप देख सकते हैं कि मैं नीचे से क्या हासिल करने की कोशिश कर रहा हूं - अग्रिम धन्यवाद।jQuery Validator.ShowErrors एमवीसी ViewModel ModelState
देखें: -
<div class="editor-field">
@Html.TextBoxFor(model => model.CostCode,
new
{
placeholder = "cost/budget code",
data_bind = "value: CostCode"
})
</div>
<div>
@Html.ValidationMessageFor(model => model.CostCode)
</div>
नॉकआउट viewmodel पोस्ट/प्रस्तुत कर रही: -
if (validator.valid())
{
console.log('is valid');
$.ajax({
url: '/api/Booking/CompleteBooking',
type: 'POST',
dataType: 'json',
data: ko.mapping.toJS(self),
error: function (jqXHR) {
extractErrors(jqXHR, validator);
},
success: function (data) {
console.log(data);
}
});
}
function extractErrors(jqXhr, validator)
{
var data = $.parseJSON(jqXhr.responseText),
errors = { };
$.each(data.ModelState, function (i, item) {
errors[i] = item;
});
console.log(errors);
validator.showErrors(errors);
}
नियंत्रक: -
[ModelValidationFilter]
public HttpResponseMessage CompleteBooking(AdditionalBookingInfoViewModel model)
{
return new HttpResponseMessage(HttpStatusCode.OK);
}
ActionFilterAttribute (modelstate ध्यान दें वापस भेजा जा रहा है)
public class ModelValidationFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
if (!actionContext.ModelState.IsValid)
{
actionContext.Response =
actionContext.Request.CreateErrorResponse(HttpStatusCode.BadRequest, actionContext.ModelState);
}
}
}
गाया मार्कअप: -
Firebug प्रतिक्रिया: -
अब, मुझे पता है सत्यापनकर्ता कोशिश करते हैं और नाम 'model.CostCode' के साथ एक तत्व मिलेगा न केवल 'कॉस्टकोड' जैसा कि यह मार्कअप में दिखाई देता है, लेकिन मैंने आईडी & नाम को 'model.CostCode' से मिलान करने का प्रयास किया है, लेकिन इससे कोई फर्क नहीं पड़ता है। मुझे लगता है कि मेरे निकालने के लिए एक समस्या है।
अगर मैं एक त्रुटि संदेश को हार्डकोड सत्यापनकर्ता काम करता है ठीक
validator.showErrors({
"CostCode" : "Test test test!"
});
वैसे, इस सर्वर साइड सत्यापन संदेश दिखाना का एक स्वीकार्य तरीका है या मैं के साथ कुछ गलत पेड़ भौंकने हूँ यह सब? कोई भी संकेतक/टिप्पणियां बहुत स्वागत है धन्यवाद।
अब आप छवियां जोड़ सकते हैं। – nemesv