2013-08-29 42 views
0

enter code here我使用客户端表单验证,但它不工作。在MVC验证不起作用

我的模型:

[Key] 
public int Id { get; set; } 

[Required(ErrorMessage = "Error")] 
[RegularExpression(@"^[0-9\.]*$",ErrorMessage="Error")] 
public string Scode { get; set; } 

笔者认为:

@Html.ValidationSummary(true) 
@using(Html.BeginForm("CreateSharshomari", "VahedInfo", FormMethod.Post)) 
{ 
    @Html.TextBox("Scode") 
    @Html.ValidationMessage("Scode") 

    <input id="BtnErsal" type="submit" value="ارسال" /> 
} 

出了什么问题?

其我的控制器。我想也许我有一个关于它的问题。请看看它并说出你的意见。

public PartialViewResult CreateSharshomari() 
    { 
     IEnumerable<Lcity> Lcitys = Dbcon.Lcitys; 
     IEnumerable<RFaaliat> RFaaliats = Dbcon.RFaaliats; 

     var query = Lcitys.Select(x => new SelectListItem 
      { 
       Value = x.Citycode.ToString(), 
       Text = x.CityName, 
       Selected = x.Citycode == 1 
      }); 
     var query1 = RFaaliats.Select(x => new SelectListItem 
      { 
       Value = x.IDReshteh.ToString(), 
       Text = x.ReshteName, 
       Selected = x.IDReshteh == 1 
      }); 

     var model = new CityFaaliatViewModel 
     { 
      Lcitylist = query.AsEnumerable(), 
      RFaaliatList = query1.AsEnumerable() 
     }; 
     return PartialView(model); 
    } 
    [HttpPost] 
    public ActionResult CreateSharshomari(TaavoniInfo Info,CityFaaliatViewModel selcode) 
    { 
     try 
     { 
      TaavoniInfo idcity = Info; 
      idcity.idCitycode = Convert.ToInt32(selcode.SelectedCitycode); 
      idcity.idIDReshteh = Convert.ToInt32(selcode.SelectedIDReshteh); 
      Dbcon.TaavoniInfos.Add(idcity); 
      Dbcon.SaveChanges(); 
      ViewBag.SuccessMsg = "success"; 
      return View(); 
     } 
     catch 
     { 
      ViewBag.SuccessMsg = "error"; 
      return View(); 
     } 
    } 

请帮帮我。

+0

你有进口'jqueryval'捆绑在该网页上? –

回答

1

你是否像下面那样导入了所需的jQuery文件?如果没有,那么我会邀请你这样做。

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script> 

鉴于你的模型:

public class MyViewModel 
{ 
    [Key] 
    public int Id { get; set; } 

    [Required(ErrorMessage = "Error")] 
    [RegularExpression(@"^[0-9\.]*$",ErrorMessage="Error")] 
    public string Scode { get; set; } 
} 

控制器:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(new MyViewModel()); 
    } 

    [HttpPost] 
    public ActionResult Index(MyViewModel model) 
    { 
     return View(model); 
    } 
} 

查看:

@model SomeAppName.Models.MyViewModel 

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 

@using(Html.BeginForm("CreateSharshomari", "VahedInfo", FormMethod.Post)) 
{ 
    @Html.ValidationSummary(true) 
    @Html.TextBox("Scode") 
    @Html.ValidationMessage("Scode") 

    <input id="BtnErsal" type="submit" value="ارسال" /> 
} 

请注意,您必须在Web.config文件下面的键,validtion对客户端的工作:

<add key="ClientValidationEnabled" value="true" /> 
<add key="UnobtrusiveJavaScriptEnabled" value="true" /> 

还是在App_Start

protected void Application_Start() 
{ 
    //Enable or Disable Client Side Validation at Application Level 
    HtmlHelper.ClientValidationEnabled = true; 
    HtmlHelper.UnobtrusiveJavaScriptEnabled = true; 
} 
+0

非常感谢您的帮助,但我在页面中导入了库,但没有解决我的问题。 – Raly

+0

@Raly在所有这些之前,您是否已经导入了Jquery?如果不是,请导入它。 –

+0

yes导入它们 – Raly