Пожалуйста, помогите мне решить эту проблему.В настоящее время я пытаюсь сделать это в MVC3, VB.NET.
Рассмотрим следующую модель:
Public Class SampleData
Public Property PTY_1 as String
Public Property PTY_2 as String
Public Property PTY_3 as String
'...snipped
Public Property PTY_19 as String
Public Property PTY_20 as String
End Class
На мой взгляд, у меня есть следующий код:
<tr><td>@Html.TextBoxFor(Function(model) model.PTY_1)</td></tr>
<tr><td>@Html.TextBoxFor(Function(model) model.PTY_2)</td></tr>
<tr><td>@Html.TextBoxFor(Function(model) model.PTY_3)</td></tr>
'...snipped
<tr><td>@Html.TextBoxFor(Function(model) model.PTY_19)</td></tr>
<tr><td>@Html.TextBoxFor(Function(model) model.PTY_20)</td></tr>
Как видите, на мой взгляд, для этого потребуется 20 строк кода.Есть ли способ использовать цикл for, чтобы в моем представлении было меньше строк?Спасибо.
Обновление 1. Я попытался добавить новое свойство PTY в мою модель для доступа к свойствам на основе индекса.Таким образом, PTY (2) = PTY_2.
Public Class SampleData
Public Property PTY(index as Integer) as String
Get
Select Case index
Case 1 : Return PTY_1
Case 2 : Return PTY_2
Case 3 : Return PTY_3
'...snipped
Case 19 : Return PTY_19
Case 20 : Return PTY_20
Case Else : Return ""
End Select
End Get
Set (value as String)
Select case index
Case 1 : PTY_1 = value
Case 2 : PTY_2 = value
Case 3 : PTY_3 = value
'...snipped
Case 19 : PTY_19 = value
Case 20 : PTY_20 = value
End Select
End Set
End Property
End Class
А что касается вида, я попробовал следующий код:
@For index as Integer = 1 to 20
<tr><td>@Html.TextBoxFor(Function(model) model.PTY(index))</td></tr>
End For
Однако, когда я загружаю вид, я получаюInvalidOperationException: «Шаблоны могут использоваться только с доступом к полям, доступом к свойствам, индексом одноразмерного массива или выражениями настраиваемого индексатора с одним параметром».Т_Т