只所以说是MVC3,是因为这个远程验证的方法,只有MVC3中才有。所以想用的兄弟们就只能去下个MVC3了,当然还要安装framework4.0.
不多说,上代码:
model层:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
//下面这二个引用一定要加上,不然不好用
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;
namespace TestMVC.Models
{
public class Eorgans
{
/// <summary>
/// 机构标识种子
/// </summary>
[Range(0, 9,ErrorMessage="只能输入0-9之间的数")]
public int sortId { get; set; }
/// <summary>
/// 机构名称
/// </summary>
[Required(ErrorMessage = "机构名称不为空")]
//这里就是所谓的远程验证。它有三个变量,第一个是控制器名,第二个是Action名,
//最后那个是验证不通过的提示文本(查看RemoteAttribute的元数据代码可以发现其实还有一个重要的参数,
//最完全的构造函数如下:public RemoteAttribute(string action, string controller, string areaName);
//可以看到还可以指示到某个Area的。
[Remote("ValName", "Organ", ErrorMessage = "该姓名已存在")]
public string or_Name { get; set; }
/// <summary>
/// 机构的sortcode
/// </summary>
[StringLength(4), Required(ErrorMessage="字符最多4位")]
public string sortCode { get; set; }
/// <summary>
///
/// </summary>
public string or_id { get; set; }
}
}
C层:
sing System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using TestMVC.Models;
namespace TestMVC.Controllers
{
public class OrganController : Controller
{
//
// GET: /Organ/
DBClass db = new DBClass();
public ActionResult Index()
{
IEnumerable<Eorgans> list = db.organsList();
return View(list);
}
public ActionResult AddOrgan()
{
Eorgans eo = new Eorgans();
return View(eo);
}
[HttpPost]
public ActionResult AddOrgan(Eorgans eo)
{
if (ModelState.IsValid)
{
string tempstr = eo.or_Name + eo.sortCode + eo.sortId;
return Content(tempstr);
}
return View(eo);
}
//这里,就是远程验证了,大家要注意的是一定要是httpget方法,不能是post的,而且返回值必须是一个json值,而不能是bool值。
//这里你可以写一些连库的验证语句,来达到真实的远程验证
//还有一点就是这里的organName是你前面表单文本框的name
[HttpGet]
public ActionResult ValName(string or_Name)
{
return Json(or_Name!= "chen", JsonRequestBehavior.AllowGet);
}
}
}
V层:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<TestMVC.Models.Eorgans>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
AddOrgan
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>AddOrgan</h2>
<% using (Html.BeginForm()) {%>
<%= Html.ValidationSummary(true) %>
<fieldset>
<legend>Fields</legend>
<div class="editor-label">
<%= Html.LabelFor(model => model.sortId) %>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(model => model.sortId) %>
<%= Html.ValidationMessageFor(model => model.sortId) %>
</div>
<div class="editor-label">
<%= Html.LabelFor(model => model.or_Name) %>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(model => model.or_Name) %>
<%= Html.ValidationMessageFor(model => model.or_Name) %>
</div>
<div class="editor-label">
<%= Html.LabelFor(model => model.sortCode) %>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(model => model.sortCode) %>
<%= Html.ValidationMessageFor(model => model.sortCode) %>
</div>
<div class="editor-label">
<%= Html.LabelFor(model => model.or_id) %>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(model => model.or_id) %>
<%= Html.ValidationMessageFor(model => model.or_id) %>
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
<% } %>
<div>
<%= Html.ActionLink("Back to List", "Index") %>
</div>
</asp:Content>
试一下吧