我有一个表单,它位于 Bootstrap 模式页面
@using (Html.BeginForm("Create", "Request"))
{
@Html.AntiForgeryToken()
<div class="form-group">
<div class="col-md-10">
@Html.EditorFor(model => model.Request.FirstName, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Request.FirstName, "", new { @class = "text-danger" , placeholder = "FirstName" })
</div>
</div>
//Omit other form groups for summary
}
当我以正确的方式放置所有内容时,它会正常工作,但如果我没有写下我的名字,它不会给我返回错误。
我有一些问题: 1 是否可以在发布之前验证输入?,jquery 验证似乎不起作用?
2 是否可以返回到发布之前打开的特定模式
3 为什么它不显示我的错误?
这是我的模型:
public class Request
{
//pkey
public virtual int Id { get; set; }
//Fkey
public virtual int TourId { get; set; }
[Required]
[MaxLength(150, ErrorMessageResourceType = typeof(ErrorResource), ErrorMessageResourceName = "CheckLenght")]
public virtual string FirstName { get; set; }
[Required]
[MaxLength(150, ErrorMessageResourceType = typeof(ErrorResource), ErrorMessageResourceName = "CheckLenght")]
public virtual string LastName { get; set; }
[Required]
[EmailAddress(ErrorMessageResourceType = typeof(ErrorResource), ErrorMessageResourceName = "Email")]
[MaxLength(150, ErrorMessageResourceType = typeof(ErrorResource), ErrorMessageResourceName = "CheckLenght")]
public virtual string Email { get; set; }
[Required]
public virtual string Phone { get; set; }
[MaxLength(100000000, ErrorMessageResourceType = typeof(ErrorResource), ErrorMessageResourceName = "CheckLenght")]
public virtual string Comment { get; set; }
public virtual bool FrequentTraveler { get; set; }
[Required]
[Range(1, 500000)]
public virtual int TravelersCount { get; set; }
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
public virtual string Date { get; set; }
public virtual bool ContactTimePreference { get; set; }
[MaxLength(150, ErrorMessageResourceType = typeof(ErrorResource), ErrorMessageResourceName = "CheckLenght")]
public virtual string Country { get; set; }
public virtual bool Archived { get; set; }
}
我想显示 ErrorResource.resx 中的错误文本。
这是我的创建方法
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "Id,TourId,FirstName,LastName,Email,Phone,Comment,FrequentTraveler,TravelersCount,Date,ContactTimePreference,Country,Archived")] Request request)
{
if (ModelState.IsValid)
{
db.Requests.Add(request);
db.SaveChanges();
TempData["ResultMessage"] = "Form Posted successfully.";
return RedirectToAction("Index", "Tour", new { country = TempData["Country"] });
}
TempData["ResultMessage"] = "Try Again!";
return RedirectToAction("Index", "Tour", new { country = TempData["Country"] });
}
如果需要的话,这是我的头标签:
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="~/Content/Site.css" rel="stylesheet" type="text/css" />
<link href="~/Content/bootstrap.min.css" rel="stylesheet" type="text/css" />
<script src="~/Scripts/modernizr-2.6.2.js"></script>
</head>
<body>
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/bootstrap.min.js"></script>
<script src="~/scripts/myjs.js"></script>
</body>
</html>
如果有人能告诉我应该更改哪些内容,我将不胜感激。谢谢
最佳答案
您需要添加两者(在 <script src="~/Scripts/jquery-1.10.2.min.js"></script>
之后)
<script src="~/Scripts/jquery.validate.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.js"></script>
为了获得客户端验证。
旁注:最好使用 bundles管理 View 和布局中的脚本和 CSS 文件。
关于asp.net-mvc - Bootstrap 模式页面 Asp.net MVC 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38265042/