Я хочу передать данные с контроллера для просмотра. В моем управлении ужином у меня есть действие «Изменить». КодViewData Error-Using ViewData передает данные с контроллера для просмотра
//
// GET: /Dinner/Edit/5
public ActionResult Edit(int id)
{
var dinner = _repository.GetDinner(id);
ViewData["Countries"] = new SelectList(PhoneValidator.AllCountries, dinner.Country);
return View(dinner);
}
Затем я хочу использовать выпадающий список для отображения информации стран это находится в странице просмотра редактирования. Мой код
<div class="editor-label">
@Html.EditorFor(model => model.Country)
</div>
<div class="editor-field">
@Html.DropDownList("Country", ViewData["Countries"] as SelectList)
@Html.ValidationMessageFor(model => model.Country)
</div>
Затем я получаю ошибку в этой строке
@Html.DropDownList("Country", ViewData["Countries"] as SelectList)
Информация об ошибке
The ViewData item that has the key 'Country' is of type 'System.String' but must be of type 'IEnumerable<SelectListItem>'
Примечание:
- У меня есть " Страна "в моем обеденном столе. Тип страны - это строка.
- Я думаю, что «Страна» в строке ошибки просто определяет отображаемое имя в форме этого поля. Таким образом, ошибка кажется inresonabel.
У меня есть имя класса DinnerViolation, я этот класс, у меня есть получить метод retrive allcontries, который я использовал в моем редактировании контроллера, чтобы установить значение SelectList, пожалуйста, проверьте код:
public class PhoneValidator { static IDictionary<string, Regex> countryRegex = new Dictionary<string, Regex>() { { "USA", new Regex("^[2-9]\\d{2}-\\d{3}-\\d{4}$")}, { "UK", new Regex("(^1300\\d{6}$)|(^1800|1900|1902\\d{6}$)|(^0[2|3|7|8]{1}[0-9]{8}$)|(^13\\d{4}$)|(^04\\d{2,3}\\d{6}$)")}, { "Netherlands", new Regex("(^\\+[0-9]{2}|^\\+[0-9]{2}\\(0\\)|^\\(\\+[0-9]{2}\\)\\(0\\)|^00[0-9]{2}|^0)([0-9]{9}$|[0-9\\-\\s]{10}$)")}, }; public static bool IsValidNumber(string phoneNumber, string country) { if (country != null && countryRegex.ContainsKey(country)) return countryRegex[country].IsMatch(phoneNumber); else return false; } public static IEnumerable<string> AllCountries { get { return countryRegex.Keys; } } }
}
Любой помогает? Спасибо
начать использовать ViewModel и бросить возиться с '' ViewData' и ViewBag'. – gdoron