标签: data-annotations

范围注释在100和100之间?

我有一个[Range]注释,如下所示:

[Range(0, 100)]
public int AvailabilityGoal { get; set; }
Run Code Online (Sandbox Code Playgroud)

我的网页看起来像这样:

<%=Html.TextBoxFor(u => u.Group.AvailabilityGoal)%>
Run Code Online (Sandbox Code Playgroud)

它应该工作,我只能输入0到100之间的值,但我也希望输入框是可选的,如果输入框为空,用户不应该得到验证错误.这与范围无关,但因为类型是整数.如果用户将其留空,则应使AvailabilityGoal = 0,但我不想强迫用户输入零.

我试过这个,但它(显然)不起作用:

[Range(typeof(int?), null, "100")]
Run Code Online (Sandbox Code Playgroud)

是否可以使用数据注释或其他方式解决此问题?

提前致谢.

鲍比

asp.net-mvc data-annotations

16
推荐指数
2
解决办法
1万
查看次数

DataType与UiHint

我一直在使用mvc2一段时间,当我需要设置模板时,我使用DataType属性

    [DataType("DropDown")]
    public int Field { get; set; }
Run Code Online (Sandbox Code Playgroud)

我看到其他人使用UiHint来实现相同的结果

    [UiHint("DropDown")]
    public int Field { get; set; }
Run Code Online (Sandbox Code Playgroud)

使用这两个属性有什么区别?我应该正常使用哪个属性,还是用于不同的任务?

c# asp.net data-annotations asp.net-mvc-2

16
推荐指数
1
解决办法
4482
查看次数

IIS无法识别视图模型注释

我有一个带注释的基本MVC视图模型,例如:

    [Required(ErrorMessage="Your Name Required")]
    [Display(Name = "Your Name")]
    [DataType(DataType.Text)]
    [MaxLength(120, ErrorMessage = "Must be under 120 characters")]                
    public String  YourName { get; set; }
Run Code Online (Sandbox Code Playgroud)

我有一个基于此视图模型的强类型视图.当我在本地运行应用程序时,以下代码生成"您的名称"标签:

@Html.LabelFor(model => model.YourName)
Run Code Online (Sandbox Code Playgroud)

当应用程序部署在带有.NET 4应用程序池的IIS7上时,标签显示"YourName"(没有空格).

这非常古怪,我以前没遇到过这个.有没有人知道可能导致这种情况的原因是什么?

清除缓存,已经从一系列Web客户端测试,结果是相同的.

编辑:

@model MVC.Web.Models.ContactUsModel

<div>
    @Html.LabelFor(model => model.YourName)
    @Html.EditorFor(model => model.YourName)       
</div>
Run Code Online (Sandbox Code Playgroud)

编辑2 正在忽略该字段上的所有注释.还有其他文本类型字段,它们具有相同的问题.这只发生在实时服务器上.实时服务器是IIS 7,已在Plesk 10.2上配置.想知道这是不是因为我使用的是MVC 3 RTM.

编辑3 在同一视图模型中,我有Email属性:

    [Required(ErrorMessage = "Your Email Is Required")]
    [Display(Name = "Your Email")]
    [RegularExpression(@"^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$", ErrorMessage = "Your Email Is Invalid")]
    [DataType(DataType.Text)]
    public String FromEmail { get; set; }
Run Code Online (Sandbox Code Playgroud)

在视图中使用此属性:

    <div>
        @Html.LabelFor(model => …
Run Code Online (Sandbox Code Playgroud)

c# asp.net data-annotations asp.net-mvc-3

16
推荐指数
1
解决办法
812
查看次数

MVC不显眼的范围验证动态值

我的模型有一个值,它必须在我的模型上的两个其他值的范围内.

例如:

public class RangeValidationSampleModel
{
    int Value { get; set; }

    int MinValue { get; set; }

    int MaxValue { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

当然,我不能将这些Min/MaxValues传递给我的DataAnnotations属性,因为它们必须是常量值.

我确定我需要构建自己的验证属性,但是我没有这么做,也无法理解它应该如何工作.

我已经搜索了大约一个小时,并且已经看到了各种用于构建自定义验证的解决方案,但是使用MVC3不显眼的验证找不到任何解决这个特定问题的方法.

asp.net-mvc data-annotations unobtrusive-validation asp.net-mvc-3

16
推荐指数
1
解决办法
1万
查看次数

ASP.NET MVC 3中的密码DataAnnotation

可能重复:
密码验证(正则表达式?)

我正在研究asp.net MVC 3应用程序,我申请了

    [Required]
    [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password { get; set; }
Run Code Online (Sandbox Code Playgroud)

DataAnnotation到我的密码字段.我想确保密码必须至少为6个字符,不超过18个字符,并且必须至少包含一个大写字母,一个小写字母和一个数字.我是否需要添加正则表达式或DataType.password才能完成所有这些操作?

请建议

data-annotations asp.net-mvc-3

16
推荐指数
1
解决办法
3万
查看次数

ReadOnly属性在ASP.NET MVC模型中不起作用

我在模型类中将属性标记为只读,如下所示:

public class RegisterModel
{
    [Display(Name = "User name")]
    [ReadOnly(true)]
    public string UserName { get; set; }
    ...
}
Run Code Online (Sandbox Code Playgroud)

在我看来:

@Html.EditorFor(m => m.UserName)
Run Code Online (Sandbox Code Playgroud)

但是当我运行应用程序时,文本框不是只读的.

我知道我可以在视图中使用html属性使其只读,但我更喜欢这可以在模型类本身中完成.

可以实现吗?

asp.net-mvc attributes data-annotations

16
推荐指数
3
解决办法
2万
查看次数

DataAnnotations [Phone]属性

[Phone]属性的默认有效格式是什么?在数据表中,电话栏是navrchar(16)如果我输入电话#1112223333,我得到"字段不是有效的电话号码".如果我输入01112223333,我会收到"值'11112223333'无效."

另外,如何覆盖它?我知道我可以做这样的事情,但这是这种情况下的最佳做法吗?

[RegularExpression(@"((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}",ErrorMessage="Invalid Phone Number!")]
Run Code Online (Sandbox Code Playgroud)

相关代码:

    [Required]
    [Phone]
    public string Phone { get; set; }

    <div class="editor-field">
       @Html.EditorFor(model => model.Phone)
       @Html.ValidationMessageFor(model => model.Phone)
    </div>
Run Code Online (Sandbox Code Playgroud)

更新 我想当我将手机列从int更改为navrchar时存在映射问题.更新模型是不够的,所以我不得不使用表映射手动更改值.

2019年错误:指定的成员映射无效.'UserDBModel.UserProfile'类型中成员'Phone'的类型'Edm.Int32 [Nullable = False,DefaultValue =]'与'SqlServerCe.nvarchar不兼容[Nullable = False,DefaultValue =,MaxLength = 16,Unicode = True ,"FixedLength = False]'成员'Phone',类型为'UserDBModel.Store.UserProfile'.

c# regex validation asp.net-mvc data-annotations

16
推荐指数
2
解决办法
4万
查看次数

如何使用不同的名称绑定视图模型属性

有没有办法将视图模型属性作为html端具有不同名称和id值的元素进行反射.

这是我想要实现的主要问题.所以问题的基本介绍如下:

1-我有一个视图模型(作为示例),它为视图侧的过滤操作创建.

public class FilterViewModel
{
    public string FilterParameter { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

2-我有一个控制器动作,它是为GETting表格值创建的(这里是过滤器)

public ActionResult Index(FilterViewModel filter)
{
return View();
}
Run Code Online (Sandbox Code Playgroud)

3-我认为用户可以过滤某些数据,并通过表单提交通过查询字符串发送参数.

@using (Html.BeginForm("Index", "Demo", FormMethod.Get))
{    
    @Html.LabelFor(model => model.FilterParameter)
    @Html.EditorFor(model => model.FilterParameter)
    <input type="submit" value="Do Filter" />
}
Run Code Online (Sandbox Code Playgroud)

4-我想在渲染视图输出中看到的是

<form action="/Demo" method="get">
    <label for="fp">FilterParameter</label>
    <input id="fp" name="fp" type="text" />
    <input type="submit" value="Do Filter" />
</form>
Run Code Online (Sandbox Code Playgroud)

5-作为解决方案,我想修改我的视图模型,如下所示:

public class FilterViewModel
{
    [BindParameter("fp")]
    [BindParameter("filter")] // this one extra alias
    [BindParameter("param")] //this one extra alias
    public string FilterParameter { …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc model-binding data-annotations razor asp.net-mvc-5

16
推荐指数
2
解决办法
1万
查看次数

将BootstrapValidator与MVC DataAnnotations一起使用

DataAnnotations用来指定我的验证规则,默认情况下,这些验证规则在客户端添加,以供jquery验证.

我想使用BootstrapValidator.js,因为我喜欢呈现错误/成功消息的方式.但是,它要求我在客户端重新定义验证规则.可以找到一篇关于BootstrapValidator.js的文章.

有没有办法DataAnnotations在一个地方使用和定义规则,仍然使用BootstrapValidator?

有什么想法吗?

validation asp.net-mvc data-annotations asp.net-mvc-4 twitter-bootstrap

16
推荐指数
1
解决办法
1100
查看次数

TDD:在ASP.NET MVC 3中测试DataAnnotations的最佳实践是什么?

我正在使用ASP.NET MVC 3和DataAnnotations参与一个项目.我们在ViewModels类中有DataAnnotations.

你如何为这些验证编写单元测试?

ViewModel示例:

public class AchievementVM
{
    [Required(ErrorMessage = "The title field is required.")]
    [StringLength(100, ErrorMessage = "Title must be 100 characters or less.")]
    public string Title { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

tdd asp.net-mvc unit-testing data-annotations

15
推荐指数
2
解决办法
3802
查看次数