这主要是用到了ajax获取后台数据的方法,具体代码见附件,以下是部分代码:
Controller部分代码:
[HttpPost]
public ActionResult Comment(Comments entity)
{
var session = 0
if (Session["UserName"] != null)
{
entity.Comment_Content = HttpUtility.HtmlDecode(entity.Comment_Content)
entity.MemberID = Convert.ToInt32(Session["UserName"].ToString())
session = 0
}
else
{
session = 1
}
CommentsFacade.Add(entity)
int dataid = Convert.ToInt32(entity.MemberID)
var dataname = MemberFacade.GetFiltered(p => p.MemberID == dataid).Select(p => p.MemberName).FirstOrDefault()
var datatime = entity.UpdateDate.ToString("yyyy年MM月dd日 HH:mm")
return Json(new { msg = "ok", data = entity.Comment_Content, dataName = dataname, dataTime = datatime, dataSession = session }, JsonRequestBehavior.AllowGet)
}
View部分代码:
window.onload = function () {
var oBtn = document.getElementById('Comment')
var oUl = document.getElementById('ul1')
oBtn.onclick = function (evt) {
var dataform = $("#dataform")
var oLi = document.createElement('li')
var url = dataform.attr("action")
var params = $(dataform).serialize()
$.post(url, params, function (data) {
var msg = data.msg
if (data.dataSession == 0) {
if (msg == "ok") {//成功
alert("保存成功")
var content = "<table style='width: 100% height: 100%'>" +
"<tr>" +
" <td>" + data.data + "</td>" +
" </tr>" +
" <tr style='text-align: right'>" +
" <td><font style='font-weight: bold'>评论者:</font>" + data.dataName + " <font style='font-weight: bold'>评论时间:</font>" + data.dataTime + "</td>" +
" </tr>" +
" </table>" +
" <hr style='background: #ccc height: 5px margin-top: -7px' />"
oLi.innerHTML = content
if (oUl.children.length > 0) {
oUl.insertBefore(oLi, oUl.children.length)
}
else {
oUl.appendChild(oLi)
}
//运动
var iHeight = oLi.offsetHeight
oLi.style.height = '0'
startMove(oLi, { height: iHeight }, 6, function () {
startMove(oLi, { opacity: 100 }, 6)
})
}
else {
alert("保存失败!")
}
}
else {
window.location = "/Home/NoSession2"
return
}
})
}
}
选择Microsoft.Web.Mvc.DataAnnotations.dll程序集和System.ComponentModel.DataAnnotations.dll程序集并点击确定按钮。不能和数据注释模型绑定器一起使用.NET Framework Service Pack 1里面包含的System.ComponentModel.DataAnnotations.dll程序集,你必须使用下载的例子里的包含的System.ComponentModel.DataAnnotations.dll版本。
最后,你需要在Global.asax文件里面注册数据注释模型绑定器。添加下面的代码到Application_Start()事件里:
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes)
ModelBinders.Binders.DefaultBinder = new Microsoft.Web.Mvc.DataAnnotations.DataAnnotationsModelBinder()
}
这些代码将ataAnnotationsModelBinder注册成为整个ASP.NET MVC应用的默认模型绑定器。
在使用数据注释模型绑定器的时候,要使用验证器特性来执行验证。System.ComponentModel.DataAnnotations命名空间包含了下面的验证特性:
Range--允许你验证一个属性的值是否在一个特定的值范围。
RegularExpression--允许你验证一个属性的值是否符合你个特定的正则表达式模式。
Required--允许你标记一个属性为必须的。
StringLength--允许你指定一个字符串属性的最大长度。
Validation--所有验证器特性的基类。
如果这些标准验证器无法满足你的需要,那么你可以通过继承基验证特性来实现一个新的验证器特性这种方式来创建一个自定义的验证器特性。
清单1的Product类说明了如何使用这些验证器特性。Name、Description和UnitPrice特性被标志为必须的。Name特性必须是一个长度小于10个字母的字符串。最后,UnitPrice属性必须匹配一个表示当前数量的正则表达式模式。
using System.ComponentModel
using System.ComponentModel.DataAnnotations
namespace MvcApplication1.Models
{
public class Product
{
public int Id { getset}
[Required]
[StringLength(10)]
public string Name { getset}
[Required]
public string Description { getset}
[DisplayName("Price")]
[Required]
[RegularExpression(@"^\$?\d+(\.(\d{2}))?$")]
public decimal UnitPrice { getset}
}
}
清单 1: Models\Product.cs
Product类说明了如何使用一个额外的特性:DisplayName特性。DisplayName特性允许你在修改属性在错误消息里显示的名称。与现实错误消息"UnitPrice字段不能为空"相反,你可以显示"Price字段是必填项"。
如果你想要完全自定义显示在验证器上面的错误消息,那么你可以将一个自定义错误消息像这样子赋值到验证器的ErrorMessage属性:<Required(ErrorMessage:="This field needs a value!")>
你可以使用清单1的Product类和清单2的Create()控制器行为。这个控制器行为在模型状态包含任何错误的时候重新显示了Create视图。
using System.Web.Mvc
using MvcApplication1.Models
namespace MvcApplication1.Controllers
{
public class ProductController : Controller
{
//
// GET: /Product/Create
public ActionResult Create()
{
return View()
}
新建一个模板页的类,让它继承于Controler类,在构造函数中写上ViewData[“MasterPageData”],返回数据。然后在每个用到模板页的Controlers中都继承这个类即可。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)