SelectList无效(ASP.NET MVC)

时间:2018-03-20 06:57:48

标签: c# asp.net asp.net-mvc

我有控制器方法来渲染PartialView并在那里显示SelectList

这是方法代码

public ActionResult AddProject()
    {
        ViewBag.Region = new SelectList(db.Regions, "Id", "Name").ToList();
        return PartialView("/Partials/ProjectModalPartial");
    }

以下是PartialView中的代码

 <div class="form-group">
    <label for="recipient-name" class="col-form-label">Выберите Город</label>
    @Html.DropDownList("Region", null, "XXXX", htmlAttributes: new { @class = "form-control", @id = "cityId"})
</div>

以下是我在View中的称呼方式

<div class="modal-body">
            @Html.Partial("~/Views/Manage/Partials/ProjectModalPartial.cshtml")
        </div>

这是区域模型

public partial class Region
{
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
    public Region()
    {
        this.Cities = new HashSet<City>();
    }

    public int Id { get; set; }
    public string Name { get; set; }

    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
    public virtual ICollection<City> Cities { get; set; }
}

但我有这个错误

  
    

没有类型为'IEnumerable'的ViewData项具有键'Region'。描述:发生了未处理的异常     在执行当前Web请求期间。请查看     堆栈跟踪以获取有关错误及其位置的更多信息     起源于代码。

  
     

异常详细信息:System.InvalidOperationException:没有   具有键的“IEnumerable”类型的ViewData项   '地区'。

     

来源错误:

     

第6行:第7行:ВыберитеГород   第8行:@ Html.DropDownList(“Region”,null,“XXXX”,   htmlAttributes:new {@class =“form-control”,@ id =“cityId”})Line   9:第10行:

我该如何解决?如果我在代码中有这个SelectList,为什么会出现?

1 个答案:

答案 0 :(得分:1)

您需要使用this Html.Action overload来调用操作方法,操作将返回部分视图。 Html.Partial只是将视图呈现为html而不调用操作,因此ViewBag.Region没有预期的值:

@Html.Action("AddProject","Project")

假设控制器类名称为ProjectController

所以现在会发生的事情是Html.Action将调用AddProject操作,并将ActionResult返回到我们调用的视图,并将呈现部分视图的html { {1}}