WHY?
为什么视图上还能定义或者调用方法呢?
我们知道MVC模式就是为了让视图和后台方法解耦合,如果把视图上定义并调用了方法,那岂不是没有优点可言了?当然这里说的定义调用方法,却是为了调用别的页面上的代码,避免重复写相同的代码而产生的,也就是相当于在A页面上,调用了B页面的html代码,这样是不是更高效了呢?!
HOW?
怎么实现定义和调用方法呢?在视图上。
在视图上有很多表达方式,下面Elsa就一一来为大家解析基本用法:
1、Razor C#语句块
@{
for (int i =0; i<10; i++)
{
<div>哈哈</div>
}
}
用@{}就可以在html中插入C#代码了。
而Razor 引擎在MVC中的核心作用就是可以自动的在C#里面自动识别html标签。
不仅能在C#中插入html代码,而且在html语句中也可以随时添加C#代码,语法:
@+空格
2、小括号的使用
当我们想把一个方法的属性当做一个新的整体的时候,就可以加入小括号。例如
<div>@(viewbag.name).name</div>
3、输出变量的语法:
string str="Elsa"
@str
直接用@方法就可以输出变量,相当于
@{
response.Write(str)
}
4、输出html字符串(不当成控件输出)
@{
string str="<input type='text'/>"
}
@str :razor视图会自动转义<>,编程alt;等。
当我们用@{response.write的时候,就会直接输出html文本,缺点就是输入到了页面的最上方。}
5、当我们想不输出在页面最上方,只想输出现在的位置的html文本。(不转义)
@Html.Raw(str)
直接用此方法:
@{
HTmlstring htmlRaw=new HtmlString("<input type="button">");
Response.Write(htmlRaw.ToHtmlString());
}
6、在视图中声明“方法”
@helper Show(string a){
<div style="border:1px">哈哈@a </div>
}
@Show("你明白了吗?")
调用了别的“方法”,节省了重复写的时间。
7、在视图中调用无返回值方法,并且可以在当前视图装传递参数给其他视图
@{ViewData["partData"]="哈哈";}
@{html.renderpartial("~/views/home/partview.cshtml");}
需要带大括号
8、调用泛型方法也需要加大括号。
@{Show<object>()}
9、可以使用<text>哈哈</text>内置方法来直接输出文本。
小结:
每天总结一点点,时间会给知识味道。