Я пытаюсь создать два раскрывающихся списка, а затем мой 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()
{
}
}
}