2011-11-07 52 views
1

我试图将新的HTML5输入属性值填充到Razor局部视图中。我的模型是这样的:从模型中动态添加HTML5输入属性

public class Answer 
{ 
    public int AnswerId { get; set; } 
    public string AnswerText { get; set; } 
    public int? Columns { get; set; } 
    public int? Maximum { get; set; } 
    public string Placeholder { get; set; } 
} 

我的部分观点如下:

@model Answer 
@{Layout = null;} 

@Html.TextBoxFor(x => x.AnswerText, new { @class="textbox", cols="@Model.Columns", max="@Model.Maximum", placeholder="@Model.Placeholder" }) 

也许这不足为奇生成HTML,看起来像这样(我省略了一些无关痛痒的属性):

<input type="text" class="textbox" cols="@Model.Columns", max="@Model.Maximum", placeholder="@Model.Placeholder"> 

尽管我看到的是html,但看起来像这样,但无论模型中有什么值:

<input type="text" class="textbox" cols="50", max="30", placeholder="Answer here"> 

我敢肯定这是我有一个荷马辛普森时刻,但我不能得到它的工作。

回答

1

取出的报价和可空字段使用GetValueOrDefault:

@Html.TextBoxFor(x => x.AnswerText, new { @class="textbox", cols=Model.Columns.GetValueOrDefault(), max=Model.Maximum.GetValueOrDefault(), placeholder=Model.Placeholder }) 
+0

谢谢回答@Garrett,但不幸的是,只是生成以下HTML:' – Nick

+0

好吧,这是导致问题的可空属性。查看更新后的答案。您需要使用GetValueOrDefault。 –

+0

完美的作品 - 谢谢@Garrett – Nick