viewmodels中的MVC3 ASP.NET对象?

时间:2012-02-29 11:12:07

标签: asp.net asp.net-mvc-3 viewmodel

  

抱歉,没关系,我解决了我的问题。我是愚蠢的><在我班上没有一个吸气剂/二传手,并且太依赖于我以错误的方式做事的想法。

     

感谢所有试图提供帮助的人。 :)

我正在尝试将视图模型传递给我的控制器中的视图。我有一个基本的ViewModel工作,它包含简单的东西,如字符串/整数等,但现在我想在我的视图模型中传递一个对象。我对视图模型进行了适当的更改,现在包含了这个对象,但我很难在视图中检索数据。

编辑:

很抱歉没有发布所有内容!

这是完整的事情:

public class StockTakeViewModel
{
    PartsViewData partsViewData = new PartsViewData();

    public StockTakeViewModel(PartsViewData PartsViewData)
    {
        partsViewData = PartsViewData;
    }
}

public class PartsViewData
{
    public string PartNum { get; set; }
    public string Issue { get; set; }
    public string Location { get; set; }
    public string BinCode { get; set; }
    public decimal StockQty { get; set; }

    public PartsViewData()
    {
    }
}


public class HomeController : Controller
{
    public ActionResult Index()
    {
        PartsViewData partsViewData = new PartsViewData();

        partsViewData.PartNum = "Part Num Test";
        partsViewData.Issue = "Issue Test";
        partsViewData.BinCode = "Bin Code Test";
        partsViewData.Location = "Location Test";
        partsViewData.StockQty = 0;

        StockTakeViewModel stockTakeViewModel = new StockTakeViewModel(partsViewData);

        return View(stockTakeViewModel);
    }
}

查看:

@model StockTake.Controllers.StockTakeViewModel

所以,从这里开始,我希望通过以下方式访问零件视图数据:

@Model.StockTakeViewModel.PartsViewData.PartNum

但是StockTakeViewModel甚至没有出现。

谢谢!

4 个答案:

答案 0 :(得分:2)

您必须在{ViewModel

中将partsViewData声明为公共属性

答案 1 :(得分:0)

试试这个:

@Model.PartsViewData.PartNum

传递给View(...)的对象是模型,但是您正在调用Model.StockTakeViewModel.PartsViewData.PartNum(可能假设模型是基于传递给{{1的类型的名称而以某种方式包装的) }})。

如果您在视图中添加了View(...),则会显示@typeof(Model).Name

答案 2 :(得分:0)

更改您的StockTakeViewModel:

public class StockTakeViewModel
{
    PartsViewData partsViewData = new PartsViewData();
    public PartsViewData PartsViewData
    {
        return this.partsViewData;
    }

    public StockTakeViewModel(PartsViewData PartsViewData)
    {
        partsViewData = PartsViewData;
    }
}

答案 3 :(得分:-1)

虽然我无法回答你的问题,因为它没有完全解释但是我想建议你,你违反了ASP.NET MVC模板所关注的问题的清晰分离,因为你把模型保留在里面控制器文件夹/命名空间。即使是为了实验,分离/组织正确结构的组件也会增加可读性和对app结构的理解。