问下MVC的初级问题,DataType究竟是干什么用的?

lovebaby 2015-10-11 11:25:55
网上查了很多资料,但始终没有一个清晰的解释。有的说是限定数据类型的,如果是限定数据类型,那该怎么限定,他是如何工作的?目前我了解到的,大部分使用都是基于[DataType(DataType.Password)],这样可以在View中渲染一个type=password的input,但其他的枚举值,貌似不起任何作用。
有没有大神能详细解释一下,好让我去除疑惑。
...全文
240 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
xboxeer 2015-10-12
  • 打赏
  • 举报
回复
你看一下前端生成的页面
lovebaby 2015-10-12
  • 打赏
  • 举报
回复
现在确实是有点纠结,呵呵。搞不明白总觉得别扭。
回头是岸 2015-10-12
  • 打赏
  • 举报
回复
哥们你不用纠结这个,你去看看mvc html都扩展了那些东西,就行了!
lovebaby 2015-10-11
  • 打赏
  • 举报
回复
引用 10 楼 Atai的回复:
不是很喜欢用这些校验注解和生成表单的方式,感觉不如直接用原生的html去写,然后js校验数据的功能,还是自己写的脚本库用起来顺手。
我也是初学MVC,现在是抱着学习研究的态度。实际应用肯定有其他可替代的解决方案
lovebaby 2015-10-11
  • 打赏
  • 举报
回复
引用 9 楼 xboxeer的回复:
<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
改成直接引用
@Html.TextBoxFor(m => m.Email)改成EditorFor试试
这样试过,不行的。。。。
Atai-Lu 2015-10-11
  • 打赏
  • 举报
回复
不是很喜欢用这些校验注解和生成表单的方式,感觉不如直接用原生的html去写,然后js校验数据的功能,还是自己写的脚本库用起来顺手。
xboxeer 2015-10-11
  • 打赏
  • 举报
回复
<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
改成直接引用
@Html.TextBoxFor(m => m.Email)改成EditorFor试试
lovebaby 2015-10-11
  • 打赏
  • 举报
回复
public class RegisterModel
{
[Required]
[Display(Name = "User name")]
public string UserName { get; set; }

[Required]
[DataType(DataType.EmailAddress)]
[Display(Name = "Email address")]
public string Email { get; set; }

[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; }

[DataType(DataType.Password)]
[Display(Name = "Confirm password")]
[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }
}

<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

<div class="editor-label">
@Html.LabelFor(m => m.UserName)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.UserName)
@Html.ValidationMessageFor(m => m.UserName)
</div>

<div class="editor-label">
@Html.LabelFor(m => m.Email)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.Email)
@Html.ValidationMessageFor(m => m.Email)
</div>

<div class="editor-label">
@Html.LabelFor(m => m.Password)
</div>
<div class="editor-field">
@Html.PasswordFor(m => m.Password)
@Html.ValidationMessageFor(m => m.Password)
</div>


上面这些代码来自默认MVC3创建项目时生成的demo代码。
xboxeer 2015-10-11
  • 打赏
  • 举报
回复
jquery valdate和jquery的js文件加了么 jquery要在jquery validate前面
lovebaby 2015-10-11
  • 打赏
  • 举报
回复
关键是我试了不管用啊。不说别的,新建MVC3项目时,采用Internet Application,VS会自动创建一个MVC3的Application,是可以运行的。在这个Application的RegisterModel中的Email字段即加了[DataType(DataType.EmailAddress)]注解,但在页面中浏览时,并没有任何关于Email的格式验证。
xboxeer 2015-10-11
  • 打赏
  • 举报
回复
其他currency等datatype也是如此 你可以在渲染的html里面看看helper为你最终的html添加的attribute
记得webcofng里面配置
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
并且引入jQuery validate的js文件 没有的话可以用nuget下
xboxeer 2015-10-11
  • 打赏
  • 举报
回复
其他的怎么没用
type是email的可以在editorfor时候自动apply email的正则校验 只要你引入了jquery validate就可以 然后在displayfor的情况下 注解了email的可以自动apply mailto的html element
穷得响叮当 2015-10-11
  • 打赏
  • 举报
回复
每日一帖,希望楼主问题 尽快解决
lovebaby 2015-10-11
  • 打赏
  • 举报
回复
我只是用EditFor来测试,发贴的目的也只是想知道微软设计这个DataType究竟有什么用,并且在实际开发中应该怎么去用,而不是只用一个[DataType(DataType.Password)]
  • 打赏
  • 举报
回复
你是用的editor或者editorfor方法吗?

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧