<select>
@{
for(int i=0;i<Model.Count;i++)
Person p =Model[i];
<option value="@p.Id">@p.Name</option>
}
</select>
** 页面中这样生成html,代码太乱,而且不能重复使用。**
在MVC中
@Html.DropDownList(); 就可以这样调用一个DropDownList() 所以可以把拼接生成select的代码放到一个单独的方法汇总
在cshtml模板页中,如果这样写
<input type="checkbox" @Model.Gender?"checked":"" />
那么Razor就会把@Model当成一个输出,所以 加个括号 改变优先级
<input type="checkbox" @(Model.Gender?"checked":"“) />
下面来直接封装一个CheckBox标签。来体会Razor的好处
public static RawString CheckBox(string name,string id,bool isChecked)//标签有名字,id,和是否选中
{
//1.new一个StringBuilder
StringBuilder ss = new StringBuilder();
//2.拼接一个CheckBox方法
ss.Append("<input type='checkbox' id=' ").Append(id).Append("'").Append("name='").Append(name).Append("'");
if (isChecked)//如果是选中的
{
ss.Append("checked");
}
ss.Append("/>");
return new RawString(ss.ToString());//返回生成的标签
}
<!--1.收先在模板文集中读取RPcshtmlHelper的命名空间-->
@using Web2
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<!--11.调用类中的方法-->
@RPcshtmlHelper.CheckBox("gender","sex",true)
</body>
</html>
使用cshtml调用外部类中的方法,增加了代码的复用性,同时使得cshtml页面看起来,更加简洁了。
小技巧:当敲击一个词时候出现自动提示。如果不想使用自动提示功能, 按下Esc按键取消自动提示;