Gibt es eine einfache Möglichkeit, die Modellvalidierung bei deaktivierten Eingabefeldern zu deaktivieren? Mein Problem ist, ich habe ein Formular mit Model-Validierung Ich benutze jquery, um eine Eingabe zu deaktivieren und es auszublenden und Ajax zu verwenden, um das Formular zu senden, aber es ist noch Model-Validierung für dieses Feld, wenn es deaktiviert ist Ich verwende HTML-Validierung für Client Seiten- und Modellvalidierung für Serverseite. Jede Hilfe würde sehr geschätzt werden. Dies ist nur ein Teil meines Codes, der viel größer ist, aber ich wollte nur wissen, ob es eine einfache Möglichkeit gibt, die Modellvalidierung auf einem deaktivierten Eingabefeld zu deaktivieren. Nicht sicher, ob Sie in der Lage sein werden, zu sagen, wie es mit meinen Codebeispielen funktioniert. Ich habe versucht, sie zu vereinfachen, um den Punkt zu verdeutlichen, aber ich glaube, ich hätte es abgeschlachtet. Ich entferne die erforderliche html 5 und deaktiviert von der Position Textfeld, um für die Modellüberprüfung zu prüfen, die groß funktioniert, aber ich will nicht, dass es funktioniert, wenn das Positionstextfeld gesperrt wird.Einfache Möglichkeit, die Modellvalidierung für deaktivierte Formulareingabe zu deaktivieren?
Teil Modell
[Required(ErrorMessage = "You must enter a location")]
[StringLength(15, ErrorMessage ="Must Be Under 15 Characters")]
public string location_txt_box { get; set; }
Teil des Controllers
[HttpPost]
[ValidateAjax]
public JsonResult AddData(form_model form_data)
{
return Json(form_data);
}
public class ValidateAjaxAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (!filterContext.HttpContext.Request.IsAjaxRequest())
return;
var modelState = filterContext.Controller.ViewData.ModelState;
if (!modelState.IsValid)
{
var errorModel =
from x in modelState.Keys
where modelState[x].Errors.Count > 0 select new
{
key = x,
errors = modelState[x].Errors.Select(y => y.ErrorMessage).ToArray()
};
filterContext.Result = new JsonResult()
{
Data = errorModel
};
filterContext.HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest;
}
}
}
Part of View
<section class="u_select_section">
<center>
<label>
@Html.RadioButtonFor(m => m.user_department_radio_group,"user", htmlAttributes: new{
@id = "u_select"
})
Filling out for myself
</label>
</center>
</section>
<section id="location_display_section" class="location_display_section">
<div id="location_error"></div>
@Html.TextBoxFor(m => m.location_txt_box, htmlAttributes: new{
@id = "dep_loca_id",
@disabled = "disabled",
@placeholder = "Type your Location",
@required = "required"
})
</section>
Teil jquery
$('#request_form').on('submit', function (e) {
$.ajax({
type: "POST",
url: "../Home/AddData",
datatype: "json",
data: $("#request_form").serializeArray(),
beforeSend: function() {
$("#progress").show();
},
complete: function() {
$('#progress').hide("fade",2000);
},
success: function (data) {
alert("Success")
},
error: function (data) {
$("#location_error").show();
var response = JSON.parse(data.responseText);
var location_error = response[0].errors[0];
$("#location_error").text("" + location_error + "").css({ "color": "red" });
}
});
e.preventDefault();
});
JQuery für Haut und
//disable functions
function disable_function_1(i) {
return $(i).attr("disabled", "disabled");
}
//user and department radio button click functions
$("#u_select").click(function() {
$(dep_loca_id).hide(effect1);//hide the department location text box
disable_function_1(dep_loca_id);//disable the department location text box
});
Post einig Beispielcode –