对象引用未设置为Razor中Dropdown List中对象的实例

时间:2017-08-09 10:06:47

标签: c# asp.net-mvc drop-down-menu

我试图找出为什么系统在visual studio中给我这个错误“,我填充数据库的下拉列表并且它在运行时有值,但是当我点击提交按钮时我得到了上面的错误,想知道是什么我在这里做错了。   这是我的代码//这是模型

public class LeaveRequest
{
    public string TableTypecode { get; set; };
    public string TableTypeName { get; set; };

    [Display(Name = "Selected TypeCode")]
    public int SelectedTableTypeCode { get; set; }
    public IEnumerable<SelectListItem> LoadedTableTypeName { get; set; }
}   

以下是从sqlserver获取数据的方法..效果很好。

  public class OpenTypeList
    {

         public List<LeaveRequest> OpenList()
         {
             string hasconnections = 
                  ConfigurationManager.ConnectionStrings["leaveConnections"]
                 .ConnectionString;

    List<LeaveRequest> P2 = new List<LeaveRequest>();

    using (SqlConnection con = new SqlConnection(hasconnections))
    using (SqlCommand cmd = new SqlCommand("ViewTypes", con))
    {
        cmd.CommandType = System.Data.CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@ListName", "status");
        con.Open();
        using (SqlDataReader dr = cmd.ExecuteReader())
        {
            while (dr.Read())
            {
                LeaveRequest pom = new LeaveRequest();
                pom.TableTypecode = Convert.ToString(dr.GetValue(0));
                pom.TableTypeName = dr.GetString(1);
                P2.Add(pom);
               }
            }
              return P2;
        }


     }
}

所以我在这里填充我的控制器列表

    [HttpGet]
    public ActionResult LeaveRequestIndex(LeaveRequest pleave)
    {
        var modal = new LeaveRequest()
        {
            UserRoles = GetRoles(),
            LoadedTableTypeName = GetTypesIdz()
        };
        return View(modal);
    }   

最后,下面是我的剃刀代码......在视图中

  <div class="form-group">
    @Html.LabelFor(model => model.RequestStatus)
    @Html.DropDownListFor(model => model.SelectedTableTypeCode, 
    Model.LoadedTableTypeName, new { @class = "form-control" })
  </div>

单击提交按钮时会生成此错误      我的帖子方法就在这里......

    [HttpPost]

    public ActionResult LeaveRequestIndex(FormCollection fmcollection)
    {
        foreach (string key in fmcollection.AllKeys)
        {
            Response.Write("Key= " + key + "  ");
            Response.Write(fmcollection[key]);
            Response.Write("<br/>");

          }
        return View();
      }

1 个答案:

答案 0 :(得分:1)

您还需要在post方法中绑定模型。因此,请更新您的帖子方法,如下所示。

N