Допустим, у вас есть следующий сценарий:
- Таблица: Страна;Столбцы: CountryID, CountryName
- Таблица: Состояние;Столбцы: StateID, StateName, CountryID (внешний ключ)
- Таблица: Населенный пункт;Столбцы: LocalityID, LocalityName, StateID (внешний ключ)
В MVC приятно, что автоматически сгенерированные классы LINQ-TO-SQL отображают отношения ассоциации в коде, чтобы вы могли вызывать связанные внешниеСущность, например, на мой взгляд, может иметь:
<% foreach (var locality in Model.Localities) { %>
<tr>
<td>
<%: locality.LocalityName %>
</td>
<td>
<%: locality.State.StateName %>
</td>
<td>
<%: locality.State.Country.CountryName %>
</td>
</tr>
<% } %>
Это успешно отрисовывается, когда я просматриваю действие index.
Однако у меня возникли проблемы с действием "Изменить".Вот код:
<strong>Locality Name</strong>
<div class="editor-field">
<%: Html.TextBox("LocalityName", Model.Locality.LocalityName) %>
<%: Html.ValidationMessage("LocalityName")%>
</div>
<strong>Country</strong>
<div class="editor-field">
<%= Html.DropDownList("CountryID", Model.CountriesDDL, "-- select --") %>
</div>
<strong>State</strong>
<div class="editor-field">
<%= Html.DropDownList("StateID", Model.StatesDDL, "-- select--") %>
<%: Html.ValidationMessage("StateID")%>
</div>
Сначала я получил ошибку проверки рядом с списком выбора состояний (для StateID), который сказал, например, «8 не является допустимым значением».Так что он не обновляется.
Насколько я понимаю, прочитав несколько постов (, например, этот ), возникает проблема, связанная с обновлением отношений с помощью базы данных путем установки идентификатораи что решение, кажется, состоит в том, чтобы установить ENTITY вместо этого.(Кстати, противоположный совет также распространяется здесь ).Следуя этому совету, я смотрел на перегруженные функции Html.DropDownList (), чтобы установить «значение» элемента списка для самого объекта, в то время как для свойства «text» присвоено Object.Name - я не решил эту проблемуеще.Но поскольку это начинание становится все более трудоемким, я был бы очень признателен за совет специалиста.
Поэтому мои вопросы таковы: действительно ли это сработает, если я начну?И возможно ли заставить SelectList работать таким образом (и любые предложения относительно того, как)?
Спасибо за ваше время,
Тим.