新手到ASP.net MVC 4,试图弄清剃刀.如果我想在.cshtml页面中显示一些文本,可以使用
<label class="LabelCSSTop">Introduction</label>
或者我应该使用:
@Html.Label("STW",htmlAttributes: new { @class = "LabelCSSTop" })
不确定一个人是否优先于另一个,或者是否可以.如果后者放弃标签标签,我应该坚持前者吗?
再次,如果我只想显示一个文本框,我可以这样做:
< input id =“txtName”type =“text”/>
或者我应该这样做:
@ Html.TextBox(“txtName”,“”)
有什么情况,当我应该使用@Html超过常规的html标签?
提前致谢!!
解决方法
在你的标签片段的情况下,这并不重要.我会去更简单的语法(纯HTML).
大多数帮助方法也不允许您包围另一个元素.这可以在选择使用/不使用时考虑.
强大的等价物
但是,值得注意的是你使用@Html.[Element]对于< T>()方法,您获得了重要的功能.注意方法名称末尾的“For”.
例:
@Html.TextBoxFor( o => o.FirstName )
这将根据对象层次结构处理ID / Name创建(这对于模型绑定至关重要).它还将添加不显眼的验证属性.这些方法使用一个表达式作为引用模型中的属性的参数.该属性的元数据是通过MVC框架获得的,因此它比其字符串参数对应方“知道”更多的属性.
它还允许您以强类型方式处理UI代码. Visual Studio将突出显示语法错误,而不能使用字符串.视图也可以随解决方案一起编译,允许进行其他编译时检查.
其他注意事项
偶尔,一个HTML帮助器方法也将执行其他有用的任务,比如Html.CheckBox和Html.CheckBoxFor,它也创建一个隐藏的字段来与复选框一起使用.另一个例子是路由感知的URL相关方法(例如超链接).
<!-- bad --> <a href="/foo/bar/123">my link</a> <!-- good --> @Html.ActionLink( "my link","foo","bar",new{ id=123 } ) <!-- also fine (perhaps you want to wrap something with the anchor) --> <a href="@Url.Action( "foo",new{ id=123 } )"><span>my link</span></a>