关闭

使用Razor拼接一个CheckBox标签

423人阅读 评论(0) 收藏 举报
分类:

为什么不在cshtm模板页中直接写一个select标签呢?

<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的好处

在抽出来的类中封装一个静态方法CheckBox

        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());//返回生成的标签
        }

在模板cshtml中调用CheckBox

<!--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按键取消自动提示;

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:28865次
    • 积分:636
    • 等级:
    • 排名:千里之外
    • 原创:121篇
    • 转载:11篇
    • 译文:0篇
    • 评论:8条
    最新评论