模型列表未从视图返回到Controller [英] Model list is not returning to the Controller from view

查看:91
本文介绍了模型列表未从视图返回到Controller的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述





i有以下学生课程



  public   class 学生
{
public int stdId { set ; get ; }
public string stdName { get ; set ; }
public string dept { get ; set ; }
}





和我的控制器代码是



  public  ActionResult Student()
{

List< Student> lstStd = new 列表< Student>(){ new 学生()
{stdId = < span class =code-digit> 103 ,stdName = bharath,dept = CSE},
new Student(){stdId = 104 ,stdName = Hari,dept = IT}};

return 查看(lstStd);
}

[HttpPost]
public ActionResult学生(IEnumerable< Student> lstStd)
{
return View();
}





和查看代码是





 @使用NewMVC.Models 
@model IEnumerable< Student>
< h2>
@using(Html.BeginForm())
{
foreach var data in Model)
{
< table>
< tr>
< td>学生姓名
< / td >
< td> @ Html.TextBoxFor(p = > data.stdId)< / td >
< / tr >
< tr>
< td>学生ID
< / td >
< td> @ Html.TextBoxFor(p = > data.stdName)< / td >
< / tr >
< tr>
< td>学生部
< / td >
< td> @ Html.TextBoxFor(p = > data.dept)< / td >
< / tr >
< / table >
}
< input type = submit value = 创建 name = hi />
}
< / h2 >





当我试图从视图中获取绑定的模型数据时,List< student>即将到来。



任何人都可以帮我找到解决方案。



谢谢提前..

解决方案

你好,我希望这对你有用..改为使用这个

 List < span class =code-keyword><  学生 >  lstStd = new List <  学生 > (){ new Student()
{stdId = 103,stdName =bharath,dept =CSE},
new Student(){stdId = 104,stdName =Hari,dept =IT使用

列表<  学生 >  lstStd = new List <  学生 > (); 

lstStd.add(
{new Student()
{stdId = 103,stdName =bharath,dept =CSE}});
lstStd.add(
new Student(){stdId = 104,stdName =Hari,dept =IT}});





返回查看(lstStd);



如果这不起作用那么请给我评论发生了什么......



ok


您好b $ b

我对您的来源做了一些小改动。请检查。



  public   class  StudentController:Controller 
{
//
// GET:/ Student /

public ActionResult Student()
{
StudentList stdlist = new StudentList();

列表< student> lstStd = new 列表< student>(){ new 学生()
{stdId = < span class =code-digit> 103 ,stdName = bharath,dept = CSE},
new Student(){stdId = 104 ,stdName = Hari,dept = IT}};

stdlist.students = lstStd;
return 查看(stdlist);
}

[HttpPost]
public ActionResult学生(StudentList stdlst)
{
return View();
}

}
public class StudentList
{
public 列表< student>学生{获取; set ; }
}
public class 学生
{
public int stdId { set ; get ; }
public string stdName { get ; set ; }
public string dept { get ; set ; }
}





查看

 @model MyMvcApp.Web.UI.Controllers.StudentList 

< h2>
@using(Html.BeginForm())
{
for int i = 0 ; i < Model.students.Count(); i ++)
{
< table>
< tr>
< td>学生姓名
< / td >
< td> @ Html.TextBoxFor(p = > Model.students [i] .stdId)< / td < span class =code-keyword>>
< / tr >
< tr>
< td>学生ID
< / td >
< td> @ Html.TextBoxFor(p = > Model.students [i] .stdName)< / td < span class =code-keyword>>
< / tr >
< tr>
< td>学生部
< / td >
< td> @ Html.TextBoxFor(p = > Model.students [i] .dept)< / td < span class =code-keyword>>
< / tr >
< / table >
}
< input type = 提交 value = create name = hi />
}
< / h2 >





请检查以下网址,您可能会知道为什么它不能与foreach合作。< br $> b $ b

http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx/ [ ^ ]


使用以下语法:

 @ using(Html.BeginForm(动作名称,控制器名称))



例如在您的代码中

 @ using(Html.BeginForm(学生,学生))





向代码隐藏添加断点以检查执行流程


Hi,

i have a student class like below

public class Student
    {
        public int stdId { set; get; }
        public string stdName { get; set; }
        public string dept { get; set; }
    }



and my controller code is

public ActionResult Student()
       {

           List<Student> lstStd = new List<Student>() { new Student()
           { stdId = 103, stdName = "bharath", dept = "CSE" },
           new Student() { stdId = 104, stdName = "Hari", dept = "IT" } };

           return View(lstStd);
       }

       [HttpPost]
       public ActionResult Student(IEnumerable<Student> lstStd)
       {
           return View();
       }



and View code is


@using NewMVC.Models
@model IEnumerable<Student>
<h2>
    @using (Html.BeginForm())
    {
        foreach (var data in Model)
        {
        <table>
            <tr>
                <td>Student Name is
                </td>
                <td>@Html.TextBoxFor(p => data.stdId)</td>
            </tr>
            <tr>
                <td>Student Id is
                </td>
                <td>@Html.TextBoxFor(p => data.stdName)</td>
            </tr>
            <tr>
                <td>Student Dept is
                </td>
                <td>@Html.TextBoxFor(p => data.dept)</td>
            </tr>
        </table>
        }
        <input type="submit" value="create" name="hi" />
    }
</h2>



when i am trying to get the binded model data from the view,the List<student> is coming as null.

Can any one please help me in finding the solution.

Thanks in advance..

解决方案

hello i hope this works for you.. used instead this

List<Student> lstStd = new List<Student>() { new Student()
           { stdId = 103, stdName = "bharath", dept = "CSE" },
           new Student() { stdId = 104, stdName = "Hari", dept = "IT" } };


use

List<Student> lstStd = new List<Student>() ;

lstStd.add(
{ new Student()
           { stdId = 103, stdName = "bharath", dept = "CSE" }});
lstStd.add(
           new Student() { stdId = 104, stdName = "Hari", dept = "IT" }} );



return View(lstStd);

if this not work then please give me comment what is happen...

ok


Hi
I made a small change in your source. Please check.

public class StudentController : Controller
  {
      //
      // GET: /Student/

      public ActionResult Student()
      {
          StudentList stdlist = new StudentList();

          List<student> lstStd = new List<student>() { new Student()
          { stdId = 103, stdName = "bharath", dept = "CSE" },
          new Student() { stdId = 104, stdName = "Hari", dept = "IT" } };

          stdlist.students = lstStd;
          return View(stdlist);
      }

      [HttpPost]
      public ActionResult Student(StudentList stdlst)
      {
          return View();
      }

  }
  public class StudentList
  {
      public List<student> students { get; set; }
  }
  public class Student
  {
      public int stdId { set; get; }
      public string stdName { get; set; }
      public string dept { get; set; }
  }



View

   @model MyMvcApp.Web.UI.Controllers.StudentList

<h2>
    @using (Html.BeginForm())
    {
       for(int i = 0; i < Model.students.Count(); i ++)
        {
        <table>
            <tr>
                <td>Student Name is
                </td>
                <td>@Html.TextBoxFor(p => Model.students[i].stdId)</td>
            </tr>
            <tr>
                <td>Student Id is
                </td>
                <td>@Html.TextBoxFor(p =>  Model.students[i].stdName)</td>
            </tr>
            <tr>
                <td>Student Dept is
                </td>
                <td>@Html.TextBoxFor(p =>  Model.students[i].dept)</td>
            </tr>
        </table>
        }
        <input type="submit" value="create" name="hi" />
    }
</h2>



Please check the following url, you may get some idea why it is not working with foreach.

http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx/[^]


use following syntax:

@using (Html.BeginForm(Action name,controller name))


eg in your code

@using (Html.BeginForm(student,student))



Add breakpoints to codebehind to check flow of the execution


这篇关于模型列表未从视图返回到Controller的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆