抱歉,没关系,我解决了我的问题。我是愚蠢的><在我班上没有一个吸气剂/二传手,并且太依赖于我以错误的方式做事的想法。
感谢所有试图提供帮助的人。 :)
我正在尝试将视图模型传递给我的控制器中的视图。我有一个基本的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甚至没有出现。
谢谢!
答案 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结构的理解。