Asp.net mvc 3 ASP NET MVC 3:表单不';由于所需的隐藏字段,无法发布

Asp.net mvc 3 ASP NET MVC 3:表单不';由于所需的隐藏字段,无法发布,asp.net-mvc-3,model,http-post,requiredfieldvalidator,hidden-fields,Asp.net Mvc 3,Model,Http Post,Requiredfieldvalidator,Hidden Fields,我想提交一份表格,但按钮不可点击。经过一些搜索,我发现这是由于ASP.NETMVC对必填字段进行了jquery验证。 出于某种奇怪的原因,ASP NET认为我的隐藏字段“UserId”是必需的。事实并非如此。请参见我的部分模型: public class ResetPasswordModel { [.....] public Guid UserId { get; set; } } 页面来源显示如下

我想提交一份表格,但按钮不可点击。经过一些搜索,我发现这是由于ASP.NETMVC对必填字段进行了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="" />


有什么想法吗

您确定没有单独的包含
元数据的分部类将该字段标记为必填字段吗

大概是这样的:

class UserResetPasswordModelMetaData
{
    [Required(ErrorMessage = "The UserId field is required.")]
    public Guid UserId { get; set; }
}
在项目中搜索
字符串“UserId字段是必需的”
。我打赌它肯定在那里的某个地方


另外,如果不是通过id,如何识别试图重置密码的用户?

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


可能在UserId属性的顶部有一个
属性,这意味着它是必需的

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

我认为默认情况下需要Guid,因为它不可为空。guid通常是主键,因此使其可为空是有问题的。尝试将guid转换为字符串(),以便可以在视图中使用它,然后在控制器或模型中使用它之前返回到guid。要做到这一点,您可能必须创建一个ViewModel。

我不确定您所说的独立类是什么意思。这是通过电子邮件发送给特定用户的页面,因此我已经有了他的id,我只想将其传递给我的post action,这就是为什么我有这个隐藏字段。是的,根据问题中提供的代码,我似乎不需要UserID字段。它没有元标记。您是否在视图中使用Html.HiddeFor?在呈现到页面之前,您是否在视图模型中设置了UserID的值?亲爱的上帝。我为我的帖子感到非常抱歉。我只是看到我没有将我的模型渲染到视图中。。。啊,我真不敢相信+1.诚实。英雄联盟我真想知道!我感谢你的坦率。我想我的答案是正确的。。。啊哼;-)你能用它的属性发布用户ID属性代码吗。