2016-08-31 6 views
0

У меня есть следующий код:сделать скрытый вход в бритвы модели

<tr> 
    <td class="tdstyle"> 
     <i class="fa fa-phone iconPos" aria-hidden="true"></i> 
     <span>@Model.LicenseHolder.LegalPerson.ContactDetails.First(x => x.ContactDataType.Name == "BillingPhone").Detail</span> 
     @Html.HiddenFor(x => x.LicenseHolder.LegalPerson.ContactDetails.First(y => y.ContactDataType.Name == "BillingPhone").Detail) 
    </td> 
</tr> 

Сформированный ввода-поле из выше код следующим образом:

<input id="Detail" name="Detail" type="hidden" value="0730730037" /> 

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

+0

, что это значение в промежутке –

+0

Установите значение свойства вы хотите связать в контроллере, а не в представлении (ваш генерирующий 'name =" Detail ", потому что это имя свойства, доступ к которому вы используете в методе' HiddenFor() ') –

+0

@StephenMuecke: Я хочу сделать это в представлении. Это возможно? – Bryan

ответ

0

В идеале эта логика должна быть в контроллере, как предположил Стивен Муеке, но если это не возможно, вы можете попробовать использовать для цикла:

for (int i = 0; i < x.LicenseHolder.LegalPerson.ContactDetails.Length; i++){ 
    if (x.LicenseHolder.LegalPerson.ContactDetails[i].ContactDataType.Name == "BillingPhone") { 
     @Html.HiddenFor(x => x.LicenseHolder.LegalPerson.ContactDetails[i].Detail) 
     break; 
    } 
} 
+0

Я не могу использовать длину, потому что ContactDetails Is IENumerble – Bryan

+0

Что такое тип данных ContactDetails? это IEnumerable ? –

Смежные вопросы