Asp.net Dropdownlist在partialview中返回空viewdata Id

Asp.net Dropdownlist在partialview中返回空viewdata Id,asp.net,asp.net-mvc-4,html.dropdownlistfor,asp.net-mvc-partialview,ajax.beginform,Asp.net,Asp.net Mvc 4,Html.dropdownlistfor,Asp.net Mvc Partialview,Ajax.beginform,我正在开发一个多步骤表单,它必须在其他步骤加起来之前将第一步提交到数据库,并在最后一步之后最终提交。看看我决定使用Sessions的选项,但是我很乐意使用更好的选项。我设法做到了这一点,后来决定使用ajax进行表单提交,因此需要PartialView。问题是下拉列表返回空的viewdata值-即它们没有绑定。任何人都可以建议最好的方式组成控制器,使这项工作。如果我恢复为返回视图而不是返回PartialView,效果会很好 控制器 [AllowAnonymous] public ActionRe

我正在开发一个多步骤表单,它必须在其他步骤加起来之前将第一步提交到数据库,并在最后一步之后最终提交。看看我决定使用Sessions的选项,但是我很乐意使用更好的选项。我设法做到了这一点,后来决定使用ajax进行表单提交,因此需要PartialView。问题是下拉列表返回空的viewdata值-即它们没有绑定。任何人都可以建议最好的方式组成控制器,使这项工作。如果我恢复为返回视图而不是返回PartialView,效果会很好

控制器

[AllowAnonymous] 
public ActionResult ContactViewDetails()
         {
ViewBag.CountryList = new SelectList(db.Countries, "CountryId", "CountryName");
             return PartialView("ContactViewDetails");
}
模型

默认页面视图

<script src="~/Scripts/jquery-2.1.3.min.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>

<div id="divContainer"> 
     @Html.Partial("RegViewDetails")
 </div>

永远不要给SelectList属性与绑定到的属性同名。ViewBag.CountryList=新建SelectList。。在视图@Html.DropDownListForx=>x.CountryId中,选择ListViewBag.CountryList,…@StephenMuecke谢谢我已经更改了,但仍然没有绑定您提到了部分视图-此下拉列表是否以部分形式呈现,如果是,请传递HtmlFieldPrefix。你需要提供更多的代码来理解问题的可能。通过ajax提交表单,你买了什么?@Qudoos感谢你提出的问题,寻求澄清-我使用ajax是为了更好的用户体验。但我设法解决了这个问题,这是唯一的绊脚石。
<script src="~/Scripts/jquery-2.1.3.min.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>

<div id="divContainer"> 
     @Html.Partial("RegViewDetails")
 </div>
@{
AjaxOptions options = new AjaxOptions();
options.HttpMethod = "POST";
options.InsertionMode = InsertionMode.Replace;
options.UpdateTargetId = "divContainer";
}
  @using (Ajax.BeginForm("ContactViewDetails", "OnlineApplication", options, new { @class = "form-horizontal" }))
                {
    @Html.DropDownListFor(x => x.CountryId, (IEnumerable<SelectListItem>)ViewBag.CountryList, new { @class = "chooseOption" })
 @Html.......others
 }
......
return PartialView("ContactViewDetails");