Добавьте второй элемент в @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>

person AtlasBowler    schedule 16.12.2014    source источник


Ответы (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>
person Brisbe    schedule 16.12.2014

Я считаю, что это может быть достигнуто только с помощью модели представления. В вашем контроллере вместо передачи исходной модели данных вы должны передать модель представления (используемую в вашем представлении), и один объект модели представления будет содержать комбинацию.

public class ViewModel
{

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

//rest of data needed for view
}

Это был бы мой способ приблизиться к этому, хотя, возможно, есть и другие методы.

person Eli Hellmer    schedule 16.12.2014