平时遇到一些问题的汇总收集(mvc)
1.asp.net mvc对数据校验提供了相当方便的支持,对于前后端的校验都是这个样子。如需要校验某个字段,只需要到对应的实体类中打上响应的标签
public class Teacher { [StringLength(5,ErrorMessage="*姓名长度不可超过5")] [Required(ErrorMessage="*必填项-姓名")] public string Name { get; set; } [Required(ErrorMessage = "*必填项-年龄")] [Range(18,120,ErrorMessage="必须在18-120岁之间")] public int Age { get; set; } public string Gender { get; set; } }
之后,生成项目,vs会自动在前段生成的代码中加入响应的校验信息,然后通过对js的调用实现前段的校验。需要引入的js脚本有以下几个:
<script src="~/Scripts/jquery-1.8.2.min.js"></script> <script src="~/Scripts/jquery.validate.min.js"></script> <script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
到此,前段校验完毕,后端的校验更简单,只需要在需要校验的地方打上这个
if (ModelState.IsValid)
全局校验的控制:(在配置文件中)
<appSettings> <add key="webpages:Version" value="2.0.0.0" /> <add key="webpages:Enabled" value="false" /> <add key="PreserveLoginUrl" value="true" /> <add key="ClientValidationEnabled" value="true" /> <add key="UnobtrusiveJavaScriptEnabled" value="true" /> </appSettings>
倒数第二个就是控制全局的客户端校验是否开启
某个页面校验的控制:
@{ Html.EnableClientValidation(true); }
true的话和没加这段代码一样,默认为校验,如果设置为false,则当前页面的客户端校验便失效
2.关于ajax
<script type="text/javascript"> $(function () { $("#TimeBtn").click(function () { $.ajax({ url: "/Home/GetDateTime", type: "POST", data: "id=2&name=wang", success: function (data) { alert(data); } }); }); }); </script>
调试和查看相关HTTP信息,可以打开火狐,f12,在控制台中查看相关发送和接收的信息。
注:今天犯了两个太幼稚的错误,1.引入了script的相关包,但是却把自己写的ajax脚本没有写在
<script type="text/javascript">和
</script>之间 2.成功后返回的data参数写成了date....
3.mvc自带ajax
@using(Ajax.BeginForm("GetDate","Home",new AjaxOptions(){Confirm="确定要提交吗?",HttpMethod="POST",InsertionMode=InsertionMode.Replace,UpdateTargetId="result",OnSuccess="afterSuccess",LoadingElementId="loading"}) )
{
<div>
用户名。。。。。。
密码。。。。
</div>
}