在我的MVC视图屏幕中,点击按钮,我通过$.ajax
进行ajax调用,并且能够调用控制器的操作方法并将响应返回到成功事件。
controller action方法的返回类型为JsonResult
并返回Json(object,AllowGEt)
我在_layout
文件中包含了jquery文件和验证文件。
问题: 问题无法在客户端激活验证。
我已经在模型对象中包含了 - Required
注释和错误消息注释。
请指导我出了什么问题。
(它在BeginForm
内进行验证时工作正常,按钮为Submit
按钮,并且调用操作方法,返回类型为ActionResult
,但没有调用ajax。)
修改为包含代码:
View
按钮点击事件: <script type="text/javascript">
$("#btnJsonSubmit").click(function () {
var f = JSON.stringify(
{ 'IDValue': objIDValue };
$.ajax({
contentType: 'application/json; charset=utf-8',
dataType: 'json',
type: 'POST',
url: '/cPreferences/InsertPreference',
data: f,
success: function () {
alert('Record saved successfully.');
$('select').prop('selectedIndex', 0);
},
failure: function (response) {
alert('f');
//console.log('error!!');
}
});
});
</script>
[HttpPost]
public JsonResult InsertPreference(string IDValue)
{
///code to call services
return Json(l, JsonRequestBehavior.AllowGet);
}
查看MOdel
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
namespace ViewModel
{
public class CampusProgramPreferencesViewModel
{
[Required(ErrorMessage = "Selection is required")]
public IList<LookupItem> DataList { get; set; }
[Required(ErrorMessage = "Preference is required")]
public string Preference { get; set; }
}
}
Layout_cshtml
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
答案 0 :(得分:0)
请确保您已包含以下内容:
1)Web配置更改:
**
<appSettings>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
**
2)脚本文件的顺序,即:
**
<script src='@Url.Content("~/Scripts/jquery.validate.js")' type='text/javascript'></script>
<script src='@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")' type='text/javascript'></script>
**