将第二项添加到@ html.textboxfor()

时间:2014-12-16 19:11:29

标签: html html.textboxfor

我有一个设置为只读的TextBoxFor,它目前拥有一个人的姓氏。我现在需要做的是添加它,以便人的后缀(II,III,Sr.,Jr。等)显示在他们姓氏旁边的文本框中。 到目前为止,这只是姓氏。我无法弄清楚如何添加后缀部分(m.Person.Suffix)。我尝试的一切都造成了错误。

<div class="control-group">
    <label>Last Name</label>
    <div class="controls">
        @Html.TextBoxFor(m => m.Person.LastName, new { @readonly = "readonly" })
    </div>
</div>

2 个答案:

答案 0 :(得分:2)

执行此操作的一种可能性,如果这将永远是只读的,将添加到您的模型:

public string LastNameWithSuffix
{
    get { return String.Format("{0} {1}", Person.LastName, Person.Suffix); }
}

然后您可以在文本框中更改代码以直接引用m.LastNameWithSuffix:

<div class="control-group">
    <label>Last Name</label>
    <div class="controls">
        @Html.TextBoxFor(m => m.LastNameWithSuffix, new { @readonly = "readonly" })
    </div>
</div>

答案 1 :(得分:0)

我相信这可能只能通过使用viewmodel来实现。在您的控制器中,您将传递viewmodel(在视图中使用),而不是传递原始数据模型,而viewmodel的实体将包含组合。

public class ViewModel
{

public string LastName {get; set;}
public string Suffix {get; set;}
public string Combo {get; set;

//rest of data needed for view
}

虽然可能还有其他方法,但这将是我接近这一点的方式。