Миграция подписки Azure из CSP для оплаты по мере поступления

Ошибка означает, что значение CategoryList равно нулю (и в результате метод DropDownListFor() ожидает, что первый параметр имеет тип IEnumerable).

Вы не генерируете вход для каждого свойства каждого SelectListItem в CategoryList (и не должен), поэтому никакие значения для SelectList не отправляются в метод контроллера, и поэтому значение model.CategoryList в методе POST равно null , Если вы вернете представление, вы должны сначала переназначить значение CategoryList, как и в методе GET.

public ActionResult Create(ProjectVM model)
{
    if (!ModelState.IsValid)
    {
        model.CategoryList = new SelectList(db.Categories, "ID", "Name"); // add this
        return View(model);
    }
    // Save and redirect
}

Чтобы объяснить внутреннюю работу (исходный код может быть см. здесь )

Каждая перегрузка DropDownList() и DropDownListFor() в конечном итоге вызывает следующий метод

private static MvcHtmlString SelectInternal(this HtmlHelper htmlHelper, ModelMetadata metadata,
  string optionLabel, string name, IEnumerable selectList, bool allowMultiple,
  IDictionary htmlAttributes)

, который проверяет, есть ли selectList (второй параметр из @Html.DropDownListFor()) является null

// If we got a null selectList, try to use ViewData to get the list of items.
if (selectList == null)
{
    selectList = htmlHelper.GetSelectData(name);
    usedViewData = true;
}

, который, в свою очередь, вызывает

private static IEnumerable GetSelectData(this HtmlHelper htmlHelper, string name)

, который оценивает первый параметр @Html.DropDownListFor() (в данном случае CategoryID )

....
o = htmlHelper.ViewData.Eval(name);
....
IEnumerable selectList = o as IEnumerable;
if (selectList == null)
{
    throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, 
        MvcResources.HtmlHelper_WrongSelectDataType,
        name, o.GetType().FullName, "IEnumerable"));
}

Поскольку свойство CategoryID является typeof int, оно не может быть передано в IEnumerable, и генерируется исключение (которое определено в файле MvcResources.resx как)


    The ViewData item that has the key '{0}' is of type '{1}' but must be of type '{2}'.

0
задан Md Farid Uddin Kiron 4 February 2019 в 14:30
поделиться

1 ответ

Миграция ресурсов между учетными записями - это не то, что я видел. Но вы можете получить шаблон менеджера ресурсов Azure для каждого ресурса. Смотрите прикрепленную ссылку.

В то же время я бы посоветовал вам внедрить инфраструктуру в виде кода как часть вашей лучшей практики для развития в вашей организации. Инфраструктура как код - это процесс управления и обеспечения вычислительной инфраструктуры в Azure с помощью некоторого декларативного подхода при настройке их конфигурации с использованием файлов определений вместо традиционных интерактивных инструментов настройки.

Ключевыми преимуществами IaC являются:

  • Последовательное достижение стандартизированной подготовки или развертывания
  • Быстрое ускорение подготовки или развертывания
  • Повторно используемый код JSON для повторяемой или аналогичной подготовки или развертывание
  • Расширяемый код JSON для включения с дополнительными элементами

Шаблон экспорта: https://docs.microsoft.com/en-us/azure/azure-resource -manager / resource-manager-export-template

Инфраструктура в виде кода: https://blogs.msdn.microsoft.com/azuredev/2017/02/11/iac-on- Лазурное представление инфраструктуры как код iac-with-azure-resource-manager-arm-template /

0
ответ дан Anorak 4 February 2019 в 14:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: