博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Html.EditorFor()为文本框加上maxlength,placeholder等属性
阅读量:5363 次
发布时间:2019-06-15

本文共 1271 字,大约阅读时间需要 4 分钟。

当想通过Html.EditorFor()给文本框加上maxlength,placeholder等属性的时候,发现Html.EditorFor()没有提供可直接加上这些属性的重载方法,如何做到呢?

□ 思路

1、Html.EditorFor()有一个重载方法如下:

 

也许,可以把需要给文本框加上的属性(maxlength, placeholder,etc),封装成一个匿名对象,作为路由数据传递给一个模版。

 

2、Html.TextBox()正好有一个重载可以把路由数据作为它的htmlAttributes参数:

 

首先,在Views/Shared/下创建EditorTemplates文件夹,并在EditorTemplates文件夹下创建部分视图string.cshtml

@model string
 
@Html.TextBox("", @ViewData.TemplateInfo.FormattedModelValue, @ViewData)
 

然后,创建一个View Model:

namespace MvcApplication1.Models
{
public class Sample
{
public string Name { get; set; }
}
}

接着,控制器方法把强类型model传递到对应的视图中:

using System.Web.Mvc;
using MvcApplication1.Models;
 
namespace MvcApplication1.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
return View(new Sample());
}
 
}
}

 

最后,在强类型视图页,把需要给文本框加上的属性封装成匿名对象,作为路由数据传递给模版页。

@model MvcApplication1.Models.Sample
 
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
 
@Html.EditorFor(s => s.Name,"string",new {maxlength=5,placeholder="用户名"})

 

□ 结果

由于有了placeholder,显示水印:

由于有了maxlength,最多只能输入5个字符:

在html代码中的input有了maxlength和placeholder属性:

□ 总结

Html.EditorFor()本身没有给input附加上属性的重载方法,只好把需要给input附加上的属性封装成匿名对象,作为路由数据交给模版视图页,在模版视图页Html.TextBox()把接收到的路由数据作为它的属性参数,最终显示出来。

转载于:https://www.cnblogs.com/darrenji/p/3640632.html

你可能感兴趣的文章
Design Tic-Tac Toe
查看>>
SQL中的去重操作
查看>>
uva 12097 - Pie(二分,4级)
查看>>
mongodb索引
查看>>
nginx源码学习资源(不断更新)
查看>>
【bzoj2882】工艺 后缀自动机+STL-map
查看>>
[redis] redis
查看>>
Linux的加密认证功能以及openssl详解
查看>>
[Tools] 使用XP远程登录Win8系统
查看>>
【RL-TCPnet网络教程】第38章 TFTP简单文件传输基础知识
查看>>
HDU- 2265 Encoding The Diary
查看>>
socket基本概念
查看>>
[第三方]SCNetworkReachability 获取网络状态控件使用方法
查看>>
在Windows上使用putty连接一台Linux主机
查看>>
Socket常见错误
查看>>
百度地图2.0API和3.0API。你想要的百度地图的这都有
查看>>
专业词汇
查看>>
星期五的收获
查看>>
proxmox 去除订阅提示
查看>>
使用Html.EditorFor()为文本框加上maxlength,placeholder等属性
查看>>