c# - MVC 5 远程验证未触发
问题描述
我正在尝试在 MVC 中实现远程验证。我已经阅读了这里已经发布的几个 tutos 和问题,但没有答案。
控制器 :
public class GroupsController: Controller
{
[HttpPost]
public ActionResult TestRemoteValidation(string Name)
{
return Json(false);
}
}
看法 :
@using (Html.BeginForm("Index", "Defaults", FormMethod.Post))
{
@Html.TextBoxFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
<input type="submit" class="btn btn-primary" value="Enregistrer" />
}
和型号:
public class Group
{
[Key]
public int Id { get; set; }
[Display(Name = "Nom du Groupe")]
[Required]
[Remote("TestRemoteValidation", "Groups", HttpMethod = "POST", ErrorMessage = "Remote fired")]
//[CustomRemoteValidation("TestRemoteValidation", "Groups", AdditionalFields = "Id")]
public string Name { get; set; }
public virtual ICollection<ApplicationUser> ApplicationUsers { get; set; }
}
生成的 HTML 代码:
<input data-val="true" data-val-remote="Remote fired" data-val-remote-additionalfields="*.Name" data-val-remote-type="POST" data-val-remote-url="/Groups/TestRemoteValidation" data-val-required="Le champ Nom du Groupe est requis." htmlAttributes="{ class = form-control }" id="Name" name="Name" type="text" value="" />
我使用它是Metadata
因为它是一个实体——>不是问题,我检查了另一个 ViewModel,它是一样的。
[Required]
并被[StringLength(10)]
解雇。当我在 中放置断点时TestRemoteValidation
,什么也没有发生。
例如,我可以使用自定义远程属性类执行远程验证并Model.IsValid
覆盖,但我不明白为什么这种方式不起作用。任何想法?
解决方案
假设Vehicule
是@model
在视图中使用
@model Vehicule
那么控制器应该期望该模型
public class DefaultsController : Controller {
[HttpGet]
public ActionResult Index() {
var model = new Vehicule();
return View(mdoel);
}
[HttpPost]
public ActionResult Index(Vehicule model) {
if(ModelState.IsValid) {
//...do something
//..possible redirect
}
//if we get this far something is wrong with data
return View(model);
}
}
当从请求中绑定模型时,模型绑定器将考虑验证。
推荐阅读
- c# - 我如何维护以前和当前接收到的数据数组而不会超出 C#
- mongodb - MongoDB增加一个键的所有值
- elasticsearch - 如何调整日期字段的日期范围聚合值?
- position - 在屏幕触摸的交换方向上移动预制件 - unity2D
- lua - 为什么 Lua 的 string.gsub 没有从变量中获取替换模式?
- javascript - 在 React 中从子级到父级有条件渲染的最佳方式
- java - 如何在图中找到特定顶点的度数?
- javascript - 无法访问 $http.get 在指令中设置的范围属性
- r - 在 Quantstrat for R 中创建投资组合时导致此错误消息的原因是什么?
- path - 使用 AppleScript 的带有空格和连字符“-”的路径