asp.net-mvc – ModelMetadata.Watermark和MVC View Models
我正在努力在我的MVC3表单输入上显示水印(所谓的占位符).
这里的帖子已经很少了,包括这里非常专注的帖子: Html5 Placeholders with .NET MVC 3 Razor EditorFor extension? 在这些帖子中,建议创建调整的html.TextBox模板. 比长谈更好,这是实际代码的相关部分: ?/型号/ myModel.cs namespace myProject.Models { public class myFormModel { ... [Display(Name = "firstFieldName",Prompt = "firstFieldPrompt")] public string firstFieldValue { get; set; } ... } } ?/控制器/ myFormSurfaceController.cs namespace myProject.Controllers { public class myFormSurfaceController : SurfaceController { ... [ChildActionOnly] public PartialViewResult myForm() { return PartialView("myPartialView",new myFormModel()); } ... [HttpPost,ValidateAntiForgeryToken] public ActionResult handleMyFormSubmit(myFormModel model) {...} ... } } ?/查看/ myProject的/部分/ myPartialView.cshtml @model myFormModel @{ using (Html.BeginUmbracoForm("handleMyFormSubmit","myFormSurface",null,new Dictionary<string,object> { { "class","myFormStyle" },{ "id","myFormId" } })) { ... @Html.TextBoxFor(x => x.firstFieldValue,new { @class = "myInputStyle",@placeholder = ViewData.ModelMetadata.Watermark }) ... } } 结果是占位符html标记在我渲染的网页上正确显示,但是尽管名称标记已正确填充,但即使没有在我的视图模型属性上设置DisplayName装饰,它也是空的. http://localhost/testpage ... <input type="text" value="" placeholder="" name="firstFieldName" id="firstFieldName" class="myInputStyle"> ... 我在这里错过了什么?我确实尝试在正确的文件夹(?/ Views / Shared / EditorTemplates /)中创建两个编辑器模板(MultilineText和String),但我认为它们从未被调用,因为我使用的是“Html.TextBoxFor”而不是“Html”.文本框”… 另外,如果从@Html.TextBoxFor调用中删除“@placeholder = ViewData.ModelMetadata.Watermark”,我在渲染的网页上没有显示任何“占位符”.哪个好,这部分电话肯定没问题. 在这一点上提前感谢任何帮助…… 尼古拉斯. 编辑: 如果我在模型中创建更多变量怎么办? 例如: public string firstFieldPrompt { get { return "bla"; } set { } } 然后 @Html.TextBoxFor(x => x.firstFieldValue,@placeholder = x => x.FirstFieldPrompt }) ? 解决方法
你得到一个空水印的原因是在你的情况下(即不使用模板)ViewData实际上是指myFormModel(而不是myFormModel.firstFieldValue);您实际上是在检索视图模型的水印.由于模型不能有水印([Display]不能应用于类)ViewData.ModelMetadata.Watermark对于视图始终为空.
据我所知,你唯一的选择(如果你不想使用模板)是内联水印: @Html.TextBoxFor(x => x.firstFieldValue,placeholder = "Your watermark text here" }) 顺便说一句,如果想要使用模板,则需要使用模板化助手@ Html.EditorFor()和@ Html.DisplayFor(). @ Html.TextBoxFor()只是@ Html.TextBox()的强类型版本.它不是模板化的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 具有自定义角色的ASP.NET MVC和Windows身份验证
- ASP.NET MVC:如何在MVC应用程序中使用静态HTML页
- asp.net-mvc – 通过自定义HTML Helper扩展方法渲
- asp.net-mvc-3 – 调整使用jquery的MVC3应用程序
- kendo-ui – 我可以在网格的数据绑定事件上传递参
- ASP.NET MVC 4实体框架6 SQL Compact Edition 4.
- asp.net-mvc-3 – 使用和不使用查询字符串路由旧
- asp.net-core – 配置ASP.Net Core以使用OIDC对T
- ASP.NET MVC性能优化(实际项目中)
- asp.net-mvc – 如何在asp.net core mvc中配置确