【问题标题】:view model list return null object查看模型列表返回空对象
【发布时间】:2016-01-25 17:33:32
【问题描述】:

查看代码:

@using HRHPMVS.Models
@model HRHPMVS.ViewModel.NationalityVM
@{
    ViewBag.Title = "list";
    //Layout = "~/Views/Shared/OrangeHR.cshtml";
    Layout = null;
}
<h1>Details</h1>
<div>

    <h1>Details</h1>
    <div>
@if (Model.NationalitiesList != null)
{

      foreach (var item in Model.NationalitiesList)
      {
         @Html.DisplayFor(m => item.Code) 

      }
}

    </div>
</div>

控制器代码:

public ActionResult list()
{
    ModelState.Clear();
    NationRepObj.list();
    return View();
}

型号:

namespace HRHPMVS.Models
{
    public class Nationality
    {
        public int ID { get; set; }
        [Display(Name = "Name")]
        [Required(ErrorMessage = "Name is Requirde")]
        [RegularExpression(@"^[a-zA-Z]+$", ErrorMessage = "please: Use letters only ")]
        public string Name { get; set; }
         [Display(Name = "Code")]
        [Required(ErrorMessage = "Code is Requirde")]
        [RegularExpression(@"[0-9]*\.?[0-9]+", ErrorMessage = "{0} must be a Number.")]
        [Range(0, int.MaxValue, ErrorMessage = "Please: enter valid integer Number")]
        public int Code { get; set; }
        public Nullable<short> IsActive { get; set; }
        // ...
    }
}

视图模型:

namespace HRHPMVS.ViewModel
{
    public class NationalityVM
    {
        public Nationality Nationality { get; set; }
        public List<Nationality> NationalitiesList { get; set; }
        // ...
    }
}

视图模型列表:

namespace HRHPMVS.ViewModel
{
    public class NationalityVMList
    {
      public List<NationalityVM> Nationalities {get;set;}
      // ...
    }
}

功能:

public   void  list()
{
    List<Nationality> n = new List<Nationality>();
    Nationality nt = new Nationality { Code=1,Name="doodoo",ID=1,IsActive=1};
    NationalityVM vm = new NationalityVM ();
    List<NationalityVM> l1 = new List<NationalityVM>();
   // foreach(var itm in nt)
    n.Add(nt);
    if (vm.NationalitiesList == null)
    {
        vm.NationalitiesList = new List<Nationality>();
        vm.NationalitiesList.Add(nt);

    }
}

我正在尝试在视图中查看详细的国籍。我想从 listviewmodel 查看它,但我失败了。我将视图模型列表指向视图模型和视图模型指向模型,但是当我尝试将国籍添加到列表中时返回空值,错误为Null reference exception wasn't handled in user code

我想显示视图模型列表中的国籍详细信息

【问题讨论】:

    标签: list exception model-view-controller null viewmodel


    【解决方案1】:

    这段代码存在几个问题,很难知道您要达到什么目的。

    您有一个名为“viewmodellist”的类,名为 NationalityVMList。我不相信这是有目的的。也许删除它。

    您的视图需要一个 NationalityVM 类型的模型,但您的控制器操作没有向它传递任何内容。

    您的“函数”会创建一个列表以及几个未使用的变量,并且不返回任何内容。

    更改您的控制器,以便将模型传递给视图:

    public ActionResult list()
    {
        NationalityVM model = NationRepObj.GetNationalityVM();
        ModelState.Clear();
        return View(model);
    }
    

    将您的功能更改为:

    public NationalityVM GetNationalityVM()
    {
        NationalityVM vm = new NationalityVM();
        Nationality nt = new Nationality { Code=1,Name="doodoo",ID=1,IsActive=1};
        vm.NationalitiesList = new List<Nationality>();
        vm.Add(nt);
        return vm;
    }
    

    希望这会有所帮助。

    【讨论】:

    • thx 我丢失的行在控制器中:NationalityVM model = NationRepObj.GetNationalityVM();返回视图(模型)我试图找出从嵌套模型中绑定数据的方法,我在想我是否将视图模型分成 2 个子视图模型,一个用于主数据,另一个用于详细信息
    • 很高兴它成功了。如果这解决了您的问题,请标记为答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-18
    相关资源
    最近更新 更多