【问题标题】:Razor variable in string not rendering properly字符串中的 Razor 变量未正确呈现
【发布时间】:2012-08-30 18:19:32
【问题描述】:
@using (Html.BeginForm())
{
    int controlWidth=250;
    @Html.TextBoxFor(m => m.studentFirstName, new { style = "width:@(controlWidth)px;" })

这段代码呈现为

            <input data-val="true" data-val-required="The Student First Name field is required." id="studentFirstName" name="studentFirstName" style="width:@(controlWidth)px;" type="text" value="" />

可以理解,我希望它呈现为

            <input data-val="true" data-val-required="The Student First Name field is required." id="studentFirstName" name="studentFirstName" style="width:250px;" type="text" value="" />

我已经看到像 ASP.NET MVC Razor Concatenation 这样的帖子表明这种方法是正确的。任何想法我做错了什么?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 razor


    【解决方案1】:

    我认为你做不到。内联模板只能在 HTML 中使用,例如 &lt;li style="@(controlWidth)"&gt;,或者如果您的方法支持内联模板。如何编写支持内联模板的方法请参阅http://vibrantcode.com/blog/2010/8/2/inside-razor-part-3-templates.html/

    【讨论】:

    • 我开始看到了。你是说剃刀变量在某些领域有效,但在样式参数中无效?
    • 是的,它可以与支持内联模板的方法一起使用,即一个方法将Func&lt;int, object&gt; template 作为参数并像作者在上面的帖子中所做的那样调用它。但我不认为这对于 C# 属性是可能的,当然 style 是这里的属性。它通常用作 html 编码的表达式,如&lt;span&gt;@model.Message&lt;/span&gt;
    • zeeshan,这个帖子stackoverflow.com/questions/4702957/… 怎么样?我不敢相信所有的海报都在说
    • 为他们工作。答案是+42
  • 这里id不是.NET属性,而是&lt;li&gt;标签的属性
  • 猜你喜欢
    相关资源
    最近更新 更多
    热门标签