错误:编译错误
说明:编译服务于此请求所需的资源期间发生错误。请查看以下特定的错误详细信息,并适当地修改您的源代码。
编译器错误消息:CS1928:'System.Web.Mvc.HtmlHelper'不包含'Label'的定义,并且最佳扩展方法重载'System.Web.Mvc.Html.LabelExtensions.Label(System.Web.Mvc.HtmlHelper ,string,string)'包含一些无效的参数
源错误:
第11行:@ Html.Label(“电子邮件”,新的{style =“ width:200px”})
我在做什么:自从我是初学者以来,就将CSS和样式应用于MVC中的RAZOR。
@using (Html.BeginForm("register","Home", FormMethod.Post, new {id="submitForm"}))
{
<div style="Width:200px">
<i>@Html.Label("Name:", new { style = "width:200px;" })</i>
@Html.TextBox("txtboxName")
</div>
<br />
<div style="Width:200px">
<i>@Html.Label("Email:")</i>
@Html.TextBox("txtboxEmail")
</div>
<br />
<div style="Width:200px">
<i>@Html.Label("Password:")</i>
@Html.Password("txtboxPassword")
</div>
<br />
<div>
<button type="submit" id="btnSubmit" name="Command" value="Submit">Submit</button>
</div>
}
最佳答案
Html.Label
的第一个参数实际上是一个字符串形式的表达式。它与不带强类型表达式的LabelFor
本质上相同。
这些表达式告诉ASP.Net在哪里寻找元数据。但是在您的情况下,您只想输出一个文字字符串。
因此,您可以简单地说:
<label style="width:200px;">Name:</label>
如果您确实想从属性元数据派生值(通常是个好主意),则可以构建如下所示的视图模型:
// view model
public sealed class MyViewModel
{
[DisplayName( "An Email Address" )]
public string Email
{
get;
set;
}
}
// in your Razor view
@Html.LabelFor( o => o.Email, new { style = "width: 200px" } )
@Html.TextBoxFor( o => o.Email )
请注意,使用上述视图模型,您现在可以使用
Label
方法。第一个参数对应于视图模型中属性的名称。@Html.Label( "Email", new { style = "width: 200px" } )
由于这依赖于字符串,因此它比上一个示例更脆弱,但是它回答了有关正确使用重载的原始问题。
出于好奇,我浏览了MVC源代码,以了解如何处理标签表达式。
Label
的第一个字符串参数绝对旨在用作表达式(而不是文字),但是如果无法派生表达式,则框架会将其视为字符串。换句话说,在某些情况下,您的代码可以实际运行,但这是内部行为,可能会更改,因此不应依赖。
但是,您收到错误的事实可能表明代码中其他地方存在另一个问题。
关于css - 标签在RAZOR中无效重载,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20852272/