1

我想提交表单,但按钮不可点击。经过一番搜索,我发现这是由于 ASP.NET MVC 对必填字段进行了 jquery 验证。由于某些奇怪的原因,ASP NET 认为我的隐藏字段“UserId”是必需的。这实际上不是真的。在这里查看我的模型的一部分:

   public class ResetPasswordModel
   {

        [.....]

     public Guid UserId
     {
       get;
       set;
     }

   }

页面源代码显示:

<input data-val="true" data-val-required="The UserId field is required." id="UserId" name="UserId" type="hidden" value="" />

有任何想法吗?!?

4

5 回答 5

1

它不是可空类型的事实意味着它是必需的。将定义更改为 Guid?(包括问号使其可以为空)或者甚至更好地创建一个没有它的视图模型。

于 2012-01-12T15:29:53.093 回答
1

我相信默认情况下需要 Guid,因为它不可为空。Guid 通常是主键,因此使它们可以为空是有问题的。尝试转换你的 guid ToString() 以便你可以在你的视图中使用它,然后在你的控制器或模型中使用它之前返回一个 Guid。您可能必须创建一个 ViewModel 才能执行此操作。

于 2012-01-12T16:56:56.383 回答
0

您确定没有单独的部分类包含MetaData已将该字段标记为必填项吗?

像这样的东西:

class UserResetPasswordModelMetaData
{
    [Required(ErrorMessage = "The UserId field is required.")]
    public Guid UserId { get; set; }
}

在您的项目中搜索string "The UserId field is required". 我敢打赌它就在某个地方。

此外,如果不是通过他们的 ID,您如何识别尝试重置密码的用户?

于 2012-01-12T15:22:48.103 回答
0

设置 jQuery 验证器以忽略隐藏字段。像这样:

jQuery验证忽略带有样式的元素

于 2012-01-12T15:24:55.650 回答
0

Key可能在UserId 属性之上有一个属性,这意味着它是强制性的

于 2012-01-12T15:26:41.560 回答