Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.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# ASP.NET MVC复杂模型绑定_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 4_Razor - Fatal编程技术网

C# ASP.NET MVC复杂模型绑定

C# ASP.NET MVC复杂模型绑定,c#,asp.net,asp.net-mvc,asp.net-mvc-4,razor,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Razor,我试图在ASP.NET MVC模型绑定中使用复杂的对象类型。我 需要插入和更新带有考试结果的学生记录 存储库类创建新记录 public bool Create(InitialApplicantLevel2Model model) { try { using (context = new SIMSDBAPPEntities()) {

我试图在ASP.NET MVC模型绑定中使用复杂的对象类型。我 需要插入和更新带有考试结果的学生记录

存储库类创建新记录

public bool Create(InitialApplicantLevel2Model model)
        {
            try
            {
                using (context = new SIMSDBAPPEntities())
                {
                    using (TransactionScope scope = new TransactionScope())
                    {
                        tblInitialApplicantLevel2 tb = new tblInitialApplicantLevel2();
                        tb.NIC = model.NIC;
                        tb.Passport = model.Passport;
                        tb.Sex = model.Sex;

                        context.tblInitialApplicantLevel2.Add(tb);


                        tblALResult results = new tblALResult();
                        results.Attempt = model.alResults.Attempt;
                        results.Grading = model.alResults.Grading;
                        results.IndexNo = model.alResults.IndexNo;
                        results.InitialApplicantLevel2ID = tb.InitialApplicantLevel2ID;
                        results.Stream = model.alResults.Stream;
                        results.Year = model.alResults.Year;
                        results.Medium = model.alResults.Medium;
                        results.ZScore = model.alResults.ZScore;

                        context.tblALResults.Add(results);


                        Save();


                        scope.Complete();
                    }
                }

                return true;
            }
            catch (Exception ex)
            {

                throw ex;
            }
        }
更新记录

public bool Update(InitialApplicantLevel2Model model)
        {
            try
            {
                using (context = new SIMSDBAPPEntities())
                {
                    using (TransactionScope scope = new TransactionScope())
                    {
                        var tb = (from tba in context.tblInitialApplicantLevel2
                                  where tba.InitialApplicantLevel2ID == model.InitialApplicantLevel2ID
                                  select tba).SingleOrDefault();

                        tb.NIC = model.NIC;
                        tb.Passport = model.Passport;
                        tb.Sex = model.Sex;

                        var results = (from tbr in context.tblALResults
                                       where tbr.InitialApplicantLevel2ID ==       model.InitialApplicantLevel2ID
                                       select tbr).SingleOrDefault();

                        results.Attempt = model.alResults.Attempt;
                        results.Grading = model.alResults.Grading;
                        results.IndexNo = model.alResults.IndexNo;
                        results.InitialApplicantLevel2ID = tb.InitialApplicantLevel2ID;
                        results.Stream = model.alResults.Stream;
                        results.Year = model.alResults.Year;
                        results.Medium = model.alResults.Medium;
                        results.ZScore = model.alResults.ZScore;

                        Save();


                        scope.Complete();


                    }
                }

                return true;
            }
            catch (Exception ex)
            {

                throw ex;
            }
        }
看法

学生详细信息插入时没有问题,但结果 属性为空。但是,在更新记录ALResults对象时 属性从视图中获取值并完美地更新记录。 为什么插入记录时对象属性为空


请按如下所示进行尝试。将virtual与您的alResults对象一起使用

public class InitialApplicantLevel2Model
    {
       //removed for clarity

        public virtual ALResults alResults { get; set; }

    }

创建记录时,您确定model.alResults属性不是空值吗?如果您使用实体框架,并查看是否存在任何MySQL错误、序列化通知或CREATETABLE命令是否具有所有属性,则启用将所有MySQL命令写入EFContext holding类中以输出。
<tr><td colspan="6"><hr /><b>G.C.E. (A/L) Results</b></td></tr>
    <tr>
        <td>Year: </td>
        <td>@Html.TextBoxFor(o=>o.alResults.Year)</td>
        <td>Index No: </td>
        <td>@Html.TextBoxFor(o=>o.alResults.IndexNo)</td>
        <td>Medium: </td>
        <td>@Html.TextBoxFor(o=>o.alResults.Medium)</td>
    </tr>
    <tr>
        <td>Stream: </td>
        <td>@Html.TextBoxFor(o=>o.alResults.Stream)</td>
        <td>Attempt: </td>
        <td>@Html.TextBoxFor(o=>o.alResults.Attempt)</td>
        <td>Zscore: </td>
        <td>
      @Html.TextBoxFor(o=>o.alResults.ZScore)

        </td>
    </tr>
public class InitialApplicantLevel2Model
    {
       //removed for clarity

        public virtual ALResults alResults { get; set; }

    }