DropDownList MVC出错

时间:2016-02-03 14:51:10

标签: asp.net asp.net-mvc

我的控制器中有这个代码:

 [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;。

有谁知道我做错了什么?

1 个答案:

答案 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")

希望这有帮助