1

私はmvcで作業しており、ビューモデルからドロップダウンリストに値を挿入するための選択リストを受け取るフォームをビューに持っています。

しかし、フォームを送信しても何も機能せず、何が起こっているのかわかりません。

フォームを送信すると、データベースにnullが入ります。

誰かがこのplsで私を助けることができますか?

ここに私のコードがあります :

model MyProject.Models.ViewModel
@using(Html.BeginForm()) {
    @Html.DropDownListFor(o => o.cp.Companylist,Model.cp.Companylist)
     @Html.EditorFor(o => o.md.title)
     @Html.EditorFor(o => o.md.edition)
    @Html.EditorFor(o => o.md.number)

  <input type="submit" name="submit" value="Add New">
}

コントローラ:

  public ActionResult Create()
        {   ViewModel vm = new ViewModel ();
            return View(vm);
        }

        //
        // POST: Create

        [HttpPost]
        public ActionResult Create(Mydata model)
        {
            if (ModelState.IsValid)
            {
                db.Res.Add(model);
                db.SaveChanges();
                return RedirectToAction("Index","AdminPanel");
            }

            return View(model);
        }

モデル:

 public class ViewModel
    {
        public Mydata md { get; set; }
        public Company cp { get; set; }
    }

Mydata - モデル:

 public class Mydata
    {
        public int ID { get; set; }
        public string company_name{ get; set; }
        public string title{ get; set; }
        public string edition{ get; set; }
        public string number{ get; set; }
    }
public class DefaultConnection : DbContext
    {
        public DbSet<Mydata> Res{ get; set; }
    }

企業 - モデル:

 public class Company
    {
        public int id { get; set; }
        public string name{ get; set; }
        public SelectList Companylist{ get; set; }  

        public Company()
        {
            Companylist= GetCompanies();
        }

        public SelectList GetCompanies()
        {
            var list = new List<SelectListItem>();
            string connection = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;

            using (var con = new SqlConnection(connection))
            {
                con.Open();
                using (var command = new SqlCommand("SELECT * FROM MyCompanies", con))
                {
                    SqlDataReader reader = command.ExecuteReader();
                    while (reader.Read())
                    {
                        //string id = reader[0] as string;
                        string name_company= reader[1] as string;
                        list.Add(new SelectListItem() { Text = name_company, Value = name_company});
                    }
                }
                con.Close();
            }
            return new SelectList(list, "Value", "Text");
        }
}
4

1 に答える 1

1

問題は、ViewModel を作成していることですが、それとmdプロパティcpが初期化されていないことです。o.cp.Companylistそのため、ビューで呼び出しているときo.cpは null です。

おそらく既存のデータをまたはCreate()に割り当てたくないので、このプロパティが初期化されていることを確認する必要があります。これはコンストラクターで簡単に実行できます。MyDataCompanyViewModel

public class ViewModel
{
    public ViewModel()
    {
         this.md = new Mydata();
         this.cp = new Company();
    }

    public Mydata md { get; set; }
    public Company cp { get; set; }
}
于 2013-08-26T13:47:41.233 に答える