ASP.NET MVC - 错误希望使用控件模型的属性

时间:2009-11-13 20:48:58

标签: asp.net-mvc

我想在受控制中使用属性“ListaDimensiones”并且不明白原因时会出现此错误。

namespace Mkt.Web.Controllers.Cubo
{
    //
    // ViewModel Classes

    public class DimensionesViewModel
    {
        // Variables Properties
        IList<Dimension> _listaDimensiones = new List<Dimension>();

        // Properties
        public IList<Dimension> ListaDimensiones { get{return _listaDimensiones;} private set{} }

        // Constructor
        public DimensionesViewModel()
        {
            _listaDimensiones = Dimensiones.GetListaFiltros(null);
        }

    }

    [HandleError]
    public class DimensionesController : Controller
    {
        //
        // GET: /Dimensiones/

        public ActionResult Index()
        {
            return View();
        }

    }
}


<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Mkt.Web.Controllers.Cubo.DimensionesViewModel>" %>
<%@ Import Namespace="Mkt.Web.Helpers" %>
<%@ Import Namespace="Mkt.Web.Models.Endidades" %>

<div>
    <!-- Error in this line for "Model.ListaDimensiones" --> 
    <%= Html.Table("myTable", (IList)Model.ListaDimensiones, null) %>  
</div>

错误:对象引用未设置为对象的实例。

4 个答案:

答案 0 :(得分:4)

您需要从控制器操作方法将ViewModel类的实例传递给您的视图:

    public ActionResult Index()
    {
        var model = new DimensionesViewModel();
        return View(model);
    }

答案 1 :(得分:1)

您没有将模型传递给您的视图。

    public ActionResult Index()
    {
        return View();
    }

应该是这样的:

    public ActionResult Index()
    {
        var model = new DimensionesViewModel();
        return View(model);
    }

答案 2 :(得分:1)

您没有将Views Model属性设置为任何内容。

在控制器中将列表传递给View方法。

return View(new DimensionesViewModel());

答案 3 :(得分:1)

您需要为视图提供DimensionesViewModel类的实例。为此,您需要在Index操作中执行以下操作:

public ActionResult Index()
{
  return View(new DimensionesViewModel());
}

您可以阅读完整的示例here