нет элемента ViewData типа 'IEnumerable' при создании двух раскрывающихся списков - PullRequest
0 голосов
/ 16 марта 2019

Я пытаюсь создать два раскрывающихся списка, а затем мой WYSIWYG, но продолжаю выдавать ошибку «System.InvalidOperationException:« Нет элемента ViewData типа «IEnumerable». Если я закомментирую », открытый ActionResultindex 'в контроллере и переименование общедоступного ActionResult GetCat в общедоступный индекс ActionResult, он работает и создает раскрывающийся список для моего типа категории. Но если я запускаю оба с истинными именами (общедоступный индекс ActionResult и общедоступный ActionResult GetCat в контроллере), яполучить исключение. Таким образом, каждый код работает сам по себе, но когда я собрал его вместе, я получил исключение. Я думаю, что проблема в публичном действии GetCat, но я не могу понять это. Я искал и искал, и я не могунайти ответ. Я новичок в ASP.Net и MVC. Вот мой код. Большое спасибо за любую помощь.

 < Controller>
 public class AdministratorController : Controller
{
    //GET: Administrator
    public ActionResult Index()
    {
        var set = new Services.SqlHelper().GetSet(@"
                SELECT UserId,
                       FirstName

                FROM Users
            ");

        var userList = new List<SelectListItem>();

        if (set.Tables != null && set.Tables.Count > 0)
        {
            var users = set.Tables[0];

            foreach (DataRow row in users.Rows)
            {
                userList.Add(new SelectListItem()
                {
                    Text = row["FirstName"].ToString(),
                    Value = row["UserId"].ToString()
                });
            }
        }

        return View(new AdministratorViewModel()
        {
            Users = userList
        });



    }

    public ActionResult GetCat()
    {
        {
            var set = new Services.SqlHelper().GetSet(@"
            SELECT CategoryType,
                   CategoryTypeName

            FROM TypeCategory
        ");

            var categoryTypeList = new List<SelectListItem>();

            if (set.Tables != null && set.Tables.Count > 0)
            {
                var categoryType = set.Tables[0];

                foreach (DataRow row in categoryType.Rows)
                {
                    categoryTypeList.Add(new SelectListItem()
                    {
                        Text = row["CategoryTypeName"].ToString(),
                        Value = row["CategoryType"].ToString()
                    });

                }

            }



            return View(new AdministratorViewModel()
            {
                CategoryType = categoryTypeList
            });

        }

    }        


    [HttpPost]
    // GET: Administrator
    public ActionResult SaveRecord(AdministratorViewModel model)
    {            
        new Services.SqlHelper().PostData(@"
            INSERT INTO Post(PostName, UserId, PostContent, CategoryType) 
            VALUES ({0}, {1}, {2}, 0)
        ", model.PostModel.PostName, model.PostModel.UserId, 
     model.PostModel.PostContent, model.PostModel.CategoryType);

        return RedirectToAction("Index");
      }
   }
 }

<  View >

  @model AdministratorViewModel


 @{
 ViewBag.Title = "Index";
 }

 <link href="~/Content/bootstrap.min.css" rel="stylesheet" />

 <div class="container" style="width:80%; margin-top:2%">

 @using (Html.BeginForm("SaveRecord", "GetCategory", "Administrator", 
 FormMethod.Post))
 {

    @Html.DropDownListFor(model => model.PostModel.UserId, Model.Users, "-- 
  select--", new { @class = "form-control" })

    @Html.DropDownListFor(model => model.PostModel.CategoryType, 
  Model.CategoryType, "--select--", new { @class = "form-control" }) 

    @Html.TextBoxFor(model => model.PostModel.PostName, new { @class = 
  "form-control", @placeholder = "Post Name" })

  @* <div class="checkbox">
    <label>
        @Html.CheckBoxFor(m => m.Remember)
        CheckBox
    </label>

  </div>*@


    <div class="TinyEditor">
        @Html.TextAreaFor(model => model.PostModel.PostContent, new { @class 
 = "form-control", @placeholder = "Post Content" })
    </div>

    <input type="submit" value="Submit" class="btn btn-block btn-primary" />

    <div>
        Posted text:
        @Html.DisplayFor(model => model.HtmlContent)
    </div>
   }



  @section Scripts
  {
    <script src="~/Scripts/tinymce/tinymce.js"></script>

    <script src="~/Scripts/main.js"></script>
  }
   </div>


  <ViewModel>
   public class AdministratorViewModel
  {

    [AllowHtml]
    public PostModel PostModel               { get; set; }
    public List<SelectListItem> Users        { get; set; }
    public List<SelectListItem> CategoryType { get; set; }
    [AllowHtml]
    public string HtmlContent { get; set; }
  }

  public class TinyEditor
  {
    [AllowHtml]
    public string HtmlContent { get; set; }

    public TinyEditor()
    {

    }
  }
  }
...