Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Mvc-带viewmodel的表单_C#_Asp.net_Asp.net Mvc - Fatal编程技术网

C# Mvc-带viewmodel的表单

C# Mvc-带viewmodel的表单,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我在mvc中工作,在我的视图中有一个表单,它从我的viewmodel接收一个selectlist,将值插入我的dropdownlist 但是在提交表单时,什么都不起作用,我也弄不清楚到底是怎么回事 提交表单时,我的数据库中会出现null 有人能帮我解决这个问题吗 这是我的密码: 查看: model MyProject.Models.ViewModel @using(Html.BeginForm()) { @Html.DropDownListFor(o => o.cp.Company

我在mvc中工作,在我的视图中有一个表单,它从我的viewmodel接收一个selectlist,将值插入我的dropdownlist

但是在提交表单时,什么都不起作用,我也弄不清楚到底是怎么回事

提交表单时,我的数据库中会出现null

有人能帮我解决这个问题吗

这是我的密码: 查看:

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; }
    }
 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");
        }
}
型号:

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; }
    }
 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");
        }
}
Mydata-型号:

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; }
    }
 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");
        }
}
公共类Mydata
{
公共int ID{get;set;}
公共字符串公司名称{get;set;}
公共字符串标题{get;set;}
公共字符串版本{get;set;}
公共字符串编号{get;set;}
}
公共类DefaultConnection:DbContext
{
公共数据库集Res{get;set;}
}
公司-型号:

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; }
    }
 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");
        }
}
上市公司
{
公共int id{get;set;}
公共字符串名称{get;set;}
公共选择列表公司列表{get;set;}
上市公司()
{
Companylist=getcompanys();
}
public SelectList GetCompanys()
{
var list=新列表();
字符串连接=ConfigurationManager.ConnectionString[“DefaultConnection”].ConnectionString;
使用(var con=newsqlconnection(连接))
{
con.Open();
使用(var命令=新的SqlCommand(“SELECT*FROM MyCompanies”,con))
{
SqlDataReader=command.ExecuteReader();
while(reader.Read())
{
//字符串id=读卡器[0]作为字符串;
字符串名称\u company=reader[1]作为字符串;
添加(新建SelectListItem(){Text=name\u company,Value=name\u company});
}
}
con.Close();
}
返回新的SelectList(列表,“值”、“文本”);
}
}

问题是您正在创建一个ViewModel,但它是
md
cp
属性未初始化。这就是为什么在视图中调用
o.cp.Companylist
时,
o.cp
为空

由于您正在尝试
Create()
您可能不想将现有数据分配给
MyData
公司
,因此您只需确保此属性已初始化。您可以在
ViewModel
构造函数中轻松完成此操作:

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

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

您正在创建一个ViewModel,但它是
md
cp
属性未初始化(据我所见)。这就是为什么在视图中调用
o.cp.Companylist
时,
o.cp
为null.mhh。。好啊我理解。。。如何初始化它们?这解决了我的dropdownlist问题。现在,我有了一个下拉列表,其中包含数据库中的值。但是如果我提交表单以将表单中的值插入到表中,则他是insert null。。有什么想法吗?现在您的
模型绑定遇到了另一个问题。我们必须查看您的
MyData
Company
代码。