我的控制器中有这个代码:
[HttpGet]
public ActionResult Create()
{
List<SelectListItem> objResult = new List<SelectListItem>();
Models.Countries country = new Models.Countries();
DataTable result = country.GetAllCountries();
foreach(DataRow row in result.Rows)
{
objResult.Add(new SelectListItem
{
Text = row["country"].ToString(),
Value = row["id"].ToString()
});
}
ViewBag.country = objResult;
return View();
}
然后在我看来我有:
@model Project.Models.CountryViewModel
@Html.DropDownList("country", (IEnumerable<SelectListItem>)ViewBag.country, "Select")
然后我在另一个视图中渲染这个局部视图:
@model Project.Models.Register
@using (Ajax.BeginForm("Register", "Register", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "complete"}))
{
<div id="complete">
@Html.Partial("~/Views/Shared/Countries.cshtml, new Project.Models.CountryViewModel()")
</div>
}
在CountryViewModel中我有:
public int CountryID { set; get; }
public string country { set; get; }
但是我收到了这个错误:
附加信息:没有类型&#39; IEnumerable&lt; SelectListItem&gt;&#39;有关键的国家&#39;。
有谁知道我做错了什么?
答案 0 :(得分:1)
将局部视图渲染为
@Html.Partial("_YourPartialViewName", Model)
不喜欢
@Html.Partial("~/Views/Shared/Countries.cshtml, new Project.Models.CountryViewModel()")
您已按上述代码传递Model
对象,然后只有下拉列表正确呈现
然后在控制器中更改以下代码
ViewBag.country = new SelectList(objResult, "Value", "Text");
然后在局部视图页面
@model IEnumerable<Project.Models.CountryViewModel>
@Html.DropDownList("country", ViewBag.country as SelectList, "Select")
希望这有帮助