将自定义 JavaScript/jQuery 效果添加到 MVC 3 表单验证中
Adding custom JavaScript/jQuery effects to MVC 3 form validation
我正在使用asp.net的MVC3构建一个大型网站。在登录页面上,我正在使用内置函数进行不显眼的javascript验证。一切都很好,但我想为验证消息的显示方式添加一些效果。(我想要一个红色框在错误下方滑动)。
我该怎么做?我一直在试图弄清楚jquery.validate.unobtrusive.js是如何工作的,但这对我来说都是黑魔法,我似乎找不到实际将消息添加到屏幕上的代码。
我将不胜感激任何帮助!我在这方面很绿色。
谢谢
涅什卡
ValidationSummary
是将错误添加到页面以在出现服务器端错误后可见的原因。 ValidationFor
元素提供客户端错误。
两者都是 HTML 帮助程序。你将需要实现自己的形式,将错误返回到视图或重写这些错误并显示自定义 UI 元素。
看看jQueryUI的初学者。
事实是,我们每个人都很可能会给你一个完全不同的场景来实现。但其中的关键元素将是jQuery/Ajax/JSON。
例如,对我来说,我在发布创建或更新的每个视图中都包含一个 javascript 引用
<script src="@Url.Content("~/Scripts/AjaxFormSubmission.js")" type="text/javascript"></script>
该脚本如下所示:
/// <reference path="jquery-1.7.2.js" />
$("document").ready(function () {
$('form').submit(function () {
if ($(this).valid()) {
$.ajax({
url: this.action,
dataType: "json",
cache: false,
type: 'POST',
data: $(this).serialize(),
beforeSubmit: showProgressStarted(),
success: function (result) {
showSuccessError(result);
}
});
}
return false;
});
});
我弹出一点"请稍候,您的请求正在处理中......"消息,当我提交表单时,我在完成时显示一个隐藏的div
,其中包含我的 JSON 成功或错误消息。
JQueryUI对话框会让你在这种目标上走得很远。
下面是上述脚本发布到的我的一个操作示例
public JsonResult UpdateRequestStatus(RequestViewModel model) {
try {
AttemptUpdateRequestStatus(model);
return Json(new { Success = true, ResultMessage = "Successfully saved" }, JsonRequestBehavior.AllowGet);
}
catch (Exception ex) {
ModelState.AddModelError("", ModelStateErrorUtility.WrapResultMessageForList(ex.Message));
}
// this custom function evaluates my ModelState and strips out all the error messages so that I can send them all back as part of my JSON response
return Json(new { Success = false, ResultMessage = ModelStateErrorUtility.GetModelStateErrors(ModelState) }, JsonRequestBehavior.AllowGet);
}
这是我的javascript/jQuery代码,显示了我的自定义错误
function showSuccessError(result) {
$('#resultSpan').html('');
var headerText;
if (result.Success) {
headerText = "Action was successful!";
$('#resultSpan').append($("<ul id='successMsg' style='list-style: none;' />").append(result.ResultMessage));
}
else {
headerText = "Ooops! There is an Error";
$('#resultSpan').append($("<ul id='errorMsg' style='list-style: none;' />").append(result.ResultMessage)).addClass("AjaxErrorText").removeClass("AjaxSuccessText");
}
showProgressComplete(headerText);
}
这将更改"请稍候..."的文本到实际成功或错误消息
function showProgressComplete(headerText) {
$('#ajaxResultPopUpHeaderText').html(headerText);
}
就像我说的,这只是一个人的例子。这里的每个人都很可能会以不同的方式实现这一点。这真的是偏好。
- 表单未使用 MVC 提交任何值 Asp.Net
- ASP MVC复选框表单提交问题
- 如何将整个模型集附加到表单数据中,并在MVC中获得它
- asp.net mvc中的javascript验证不适用于登录表单
- 在带有 bootbox 的自定义对话框中添加选项以选择表单控件.js在 ASP.NET MVC 中
- 使用Html.BeginFrom在ASP.Net MVC中提交一个带有锚(<a>)标记且具有一定值的表单
- 在带有Partial视图的MVC 5中,将提交按钮移动到表单外部
- jquery禁用表单提交时输入MVC 4
- ExtJS MVC 表单引用
- 在标准mvc表单帖子中包含knockoutjs可观察值的任何方式
- MVC表单在阅读智能卡后自动发布
- ASP.NET MVC表单:可以用ENTER键提交,但不能用submit按钮提交
- 用MVC表单Post发送HTML字符串
- 使用Javascript函数防止MVC表单提交
- 用jQuery序列化MVC表单
- 没有表单提交的MVC表单验证
- 取消MVC表单提交
- asp.net mvc-使用Javascript获取mvc表单数据
- 不会提交带有名称的 MVC 表单输入按钮
- mvc表单中的取消按钮