Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 所需属性在asp.net mvc中不起作用_C#_Asp.net Mvc_Asp.net Mvc Viewmodel - Fatal编程技术网

C# 所需属性在asp.net mvc中不起作用

C# 所需属性在asp.net mvc中不起作用,c#,asp.net-mvc,asp.net-mvc-viewmodel,C#,Asp.net Mvc,Asp.net Mvc Viewmodel,我有一个简单的强类型视图 @model GoldForGold.Models.LogonModel @{ ViewBag.Title = "Logins"; Layout = "~/Views/Shared/_Layout.cshtml"; } Logins @using (Html.BeginForm()) { Account Information @Html.LabelFor(m => m.UserName) @Html.TextBoxFor(m => m.

我有一个简单的强类型视图

@model GoldForGold.Models.LogonModel
@{
    ViewBag.Title = "Logins";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

Logins
@using (Html.BeginForm()) {

Account Information
@Html.LabelFor(m => m.UserName)
@Html.TextBoxFor(m => m.UserName, new { id = "txtUserName" })
@Html.ValidationMessageFor(m => m.UserName)
@Html.LabelFor(m => m.Password)
@Html.PasswordFor(m => m.Password, new { id = "txtPassword" })
@Html.ValidationMessageFor(m => m.Password)
@Html.CheckBoxFor(m => m.RememberMe)
@Html.LabelFor(m => m.RememberMe)

<input type="submit" value="Log On" onclick="getcredentials()" />
}

即使我没有输入用户名和密码,我也看不到任何事情发生。

对于客户端验证,您需要jquery和jquery验证

之后,必须在配置中启用客户端验证:

<appSettings> 
...
<add key="ClientValidationEnabled" value="true" /> 
<add key="UnobtrusiveJavaScriptEnabled" value="true" /> 

以下是完整的解决方案:

  • 将以下脚本添加到视图中:

    <script src='@Url.Content("~/Scripts/jquery-1.8.2.js")' type='text/javascript'></script>    
    <script src='@Url.Content("~/Scripts/jquery.validate.js")' type='text/javascript'>         </script>
    <script src='@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")' type='text/javascript'></script>
    
  • 向模型的元素添加必需的属性

    [Required(ErrorMessage="please enter username")]
    public string UserName { get; set; }
    

  • 对于记录,您可以在视图的末尾包含以下代码,以确保用户界面中弹出
    [必需]
    属性:

    @section Scripts {
        @Scripts.Render("~/bundles/jqueryval")
    }
    
    • 解决方案的步骤:
    1-添加要查看的脚本:

    <script src='@Url.Content("~/Scripts/jquery-1.8.2.js")' type='text/javascript'></script>       
    <script src='@Url.Content("~/Scripts/jquery.validate.js")' type='text/javascript'>         
    </script>
    <script src='@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")' type='text/javascript'></script>
    
    4-将必需属性添加到模型的元素:

    [Required(ErrorMessage="please enter username")]
    public string UserName { get; set; }
    

    使用
    [Required]
    时需要注意的另一件事是在整数字段上使用它时,不仅是在存储数值时,而且在存储下拉列表/选择列表中选定值的id时

    [Required]
    在这种情况下不起作用,因为整数属性永远不能为null,因此始终具有默认值零<代码>[必需]正在检查属性是否有值,并且零被视为值,因此检查将通过

    在这种情况下,可以将属性声明为可为null的整数:

    [必需]
    公共整数?LanguageId{get;set;}//注意,int现在可以为空
    
    或者,也可以使用
    范围
    属性停止零为可接受值:

    [范围(1,int.MaxValue)]
    public int LanguageId{get;set;}
    
    我解决问题的方法是在model类中使用这行代码

    using System.ComponentModel.DataAnnotations;
    

    请注意,还有另一个名称空间(Microsoft.Build.Framework)也支持[Required]注释。

    在我的例子中,发生这种情况是因为我没有安装程序包


    安装并运行WebApp后,它就开始工作了。

    您能告诉我们您的后期操作方法吗?您基本上是复制了Vahagn Nahappetyan的答案。非常感谢。这件事伤了我的头!我已经准备好了这些,但这促使我重新审视我的收录。未包含query.validate.min.js或jquery.validate.unobtrusive.min.js。新手犯的错误。
    @section Scripts {
        @Scripts.Render("~/bundles/jqueryval")
    }
    
    <script src='@Url.Content("~/Scripts/jquery-1.8.2.js")' type='text/javascript'></script>       
    <script src='@Url.Content("~/Scripts/jquery.validate.js")' type='text/javascript'>         
    </script>
    <script src='@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")' type='text/javascript'></script>
    
    <appSettings>
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
    </appSettings>
    
    @Html.ValidationMessageFor(model => model.UserName)
    
    [Required(ErrorMessage="please enter username")]
    public string UserName { get; set; }
    
    using System.ComponentModel.DataAnnotations;