- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
编辑: 似乎没有任何属性起作用,验证与否。例如,[DataType(DataType.Date)] 无论如何也不会更改标记,虽然它应该向元素添加“type=date”,[Authorize] 属性甚至允许未经授权的用户通过等。任何人都有任何想法关于可能是什么问题?
编辑 2: 在尝试找出问题所在时添加了以下内容:
ModelMetadata metadata = ModelMetadata.FromLambdaExpression(m => m.Name, Html.ViewData);
var val = metadata.GetValidators(new ControllerContext());
var attributes = metadata.ContainerType.GetProperties().Where(x => x.Name == "Name").FirstOrDefault().CustomAttributes;
“val”变量不返回任何验证器,而在新项目中,同一行可以正常工作并返回模型属性具有的所有属性的 IEnumerable。但是,'attributes' 变量确实找到了属性具有的所有属性。那么我该从哪里去找出问题所在呢?
编辑 3: 所以我比较了属性“ModelValidatorProviders.Providers”在我的项目和新项目之间在 Global.asax 的“Application_Start()”方法中返回的内容,事实证明出于某种原因对于我的项目,它没有“DataAnnotationsModelValidatorProvider”。所以我在“Application_Start()”做了这个:
ModelValidatorProviders.Providers.Add(new DataAnnotationsModelValidatorProvider());
现在验证有效(除了 [Authorize] 属性和其他与模型无关的属性,看起来它们仍然无效)!不过,这不是什么好办法。为什么首先不是 ModelValidatorProviders 属性中的提供者?这可能与我安装了 Autofac 并且可能以某种方式混淆了它这一事实有关吗?
编辑 4: 已修复,请参阅答案。
原帖:
此时我很紧张,因为我已经阅读了多篇关于此的文章,但没有一篇有帮助。奇怪的是,验证之前有效,然后突然停止工作(我没有改变任何东西)。我什至重新启动了我的电脑,但这并没有真正帮助。
我的 ViewModel 看起来像这样(验证在站点的任何地方都不起作用,所以我可以为您提供几乎任何 View 模型):
public class ChangePasswordViewModel
{
[Required]
[DataType(DataType.Password)]
[Display(Name = "Current password")]
public string OldPassword { get; set; }
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "New password")]
public string NewPassword { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Confirm new password")]
[Compare("NewPassword", ErrorMessage = "The new password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }
}
这是 View (几乎也是默认的 MVC View ,因此没有任何问题):
@model AwenterWeb.Models.ChangePasswordViewModel
@{
ViewBag.Title = "Change Password";
}
<h2>@ViewBag.Title.</h2>
@using (Html.BeginForm("ChangePassword", "Manage", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
@Html.AntiForgeryToken()
<h4>Change Password Form</h4>
<hr />
@Html.ValidationSummary("", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(m => m.OldPassword, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.PasswordFor(m => m.OldPassword, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.NewPassword, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.PasswordFor(m => m.NewPassword, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.ConfirmPassword, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.PasswordFor(m => m.ConfirmPassword, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Change password" class="btn btn-default" />
</div>
</div>
}
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
我在 Html.TextBoxFor 上放置了一个断点,并确保它返回的 HTML 确实没有必要的验证属性。还有什么可以打破的?这绝对不是 Validation JS 文件的问题,而是 Html.TextBoxFor 和其他辅助类由于某种原因无法判断字段具有属性!
最佳答案
经过一整天的尝试找出可能出了什么问题后,我决定完全卸载我拥有的 Autofac 和 Ninject 的所有痕迹(不知道为什么我有 Ninject,不记得曾经安装过它)并感到惊讶,令人惊讶的事情又开始起作用了。然后我重新安装了我拥有的最新版本的 Autofac 软件包,并且属性仍然有效,所以这可能与那些流氓 Ninject 软件包有关。
我仍然不知道为什么 Autofac 或 Ninject 会在我没有明确告诉他们这样做的情况下扰乱属性和验证的工作方式,但在这一点上我什至不在乎。
希望这对某人有帮助!
关于c# - MVC Unobtrusive validation data-val-* markup attributes not being generated,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30354057/
我创建了一个基本的控制台应用程序来进行这样的测试。 short val = 32767; val++; Console.WriteLine(val);
考虑下面的代码,我试图理解三种不同的数据绑定(bind)方法之间的区别。由于我是 Angular4 的新手,我需要弄清楚何时使用什么。例如要分配 ngModel,请使用 [(ngModel)]。要分配
我看到很多人使用各种不同的方法来检查变量是否为空,似乎真的没有达成共识。我听说 if($foo) 与 if(!empty($foo)) 或 if($foo != "")。 这是真的吗? 我知道这是一个
此代码有效: let mut b: Vec = Vec::with_capacity(a.len()); for val in a.iter() { b.push(val); } 此代码不起作
这可能是 bike-shedding ,但也许我遗漏了一些有趣的东西...... 如果一个类初始化一个成员val至 std::numeric_limits::infinity()后来想检查 val 是
我不知道如何以可搜索的方式表达我的问题,所以如果已经得到解答,请原谅我。我对 SQL 命令还不够熟悉,甚至无法为我指明正确的方向。我有一个连接另外两个表的 sqlite 表。示例: ╔═════╦══
这个似乎依赖于 Java 和 Kotlin 之间的交互,首先是一个 Java 类: public class MyJavaClass { private Runnable q; pub
这个问题已经有答案了: What does &= mean? [closed] (5 个回答) 已关闭 5 年前。 基本上试图找到汉明字符串 https://en.wikipedia.org/wiki
我只是创建一个函数,该函数将 JSON.stringify 输入,同时也会检测数字输入上的 NaN,但不想使用 typeof 由于以下原因。输入可以是数字、 bool 值或字符串。仅此而已。 我已经遇
我正在努力构建允许我从起始值过渡到目标最终值的公式,同时使用 Sin 或 Cos 波在指定时间内衰减? 我正在尝试使用 CSS 和 jsfiddle 模仿我在下面的示例中看到的弹跳效果。我制作这个示例
这个问题已经有答案了: Why are we not allowed to have assignment statements in the file scope in C? (2 个回答) Why
我有这个代码 January February 我用它来尝试获取值: $month = $("#month option:selected").val(); 但它返回文本“Janu
在我的 Kotlin 项目中,我想在编译时声明常量: 所以我用这个: @RunWith(AndroidJUnit4::class) class TradersActivityTest { pr
我是 Java 新手,我知道这是一个愚蠢的问题,但我无法理解 Java 初始化变量的方式。我尝试做一些测试,但我不知道这是如何工作的。 当我学习C或Java编程时,定义新变量的语法是这样的: type
我正在尝试在 kotlin 中编写一个函数,但我无法将值重新分配给函数参数,它说 val cannot be reassigned 。 class WebView{ var homepage
我将查询字符串传递到我的 Windows Phone 应用程序中的页面:page.xaml?key=val&key2=val . 我收到的是 NavigationContext.QueryString
我正在阅读 https://github.com/antirez/redis 中的 Redis 源代码. 我在src/ziplist.c中看到了这样的宏 #define INT24_MAX 0x7ff
我想知道下面两种情况有什么区别,推荐使用哪种? $val = 0; if (!$val) { //True } if (empty($val) { //It's also True } 最佳答
我理解在 Kotlin 中 const val 用于声明常量,而 val 用于只读属性。但是,我想知道在以下情况下,哪个更适合使用。 假设我有一个 fragment 需要一个用于 saveInstan
LinkedIn 问题 const val 可以做什么 @JvmField val 不能做什么? 关于 Val 和 const 之间的区别,有多种答案。canst Val 和 @JvmField Va
我是一名优秀的程序员,十分优秀!