我有一个使用标准模型的视图,但现在我需要在页面上添加来自两个不同模型的信息。在做了一些研究来处理这个问题之后,我创建了一个ViewModel。现在我收到一个错误,当显示我的观点时说:ASP.NET MVC 3 ViewModel对象上的DataBinder.Eval抛出“不包含属性”
DataBinding:'VirtualAuthtech.ViewModels.CMSCalculatorViewModel'不包含名称为'WORKCY'的属性。
这里是我的视图模型
namespace VirtualAuthtech.ViewModels
{
public class CMSCalculatorViewModel
{
public CPT CPT { get; set; }
public GPCI GPCI { get; set; }
}
}
CPT是我原来用的是第一种模式,然后我需要添加GPCI
这里是我的看法的ActionResult的
public ActionResult _CMSCalculator()
{
string CPTCode = string.Empty;
string MOD = string.Empty;
string GPCIPayID = "31146";
string GPCIYear = "2011";
if (Request.Params["CPT1"] != null)
{
CPTCode = Request.Params["CPT1"];
MOD = Request.Params["MOD"];
}
return PartialView("_CMSCalculatorPanel", (string.IsNullOrEmpty(CPTCode) ? null as CMSCalculatorViewModel : CPTDataHelper.GetCPTGPCI(CPTCode, MOD, GPCIPayID, GPCIYear)));
}
这里从我的模型中获取数据的方法
public static CMSCalculatorViewModel GetCPTGPCI(string CPTCode, string MOD, string GPCIPayID, string GPCIYear)
{
using (var DB = new VADataContext())
{
var view = new CMSCalculatorViewModel();
if (String.IsNullOrWhiteSpace(MOD))
{
view.CPT = (from cpt in DB.CPTs
where cpt.CPT1 == CPTCode
select cpt).FirstOrDefault<CPT>();
view.GPCI = (from gpci in DB.GPCIs
where gpci.PAYID == GPCIPayID && gpci.YEAR == GPCIYear
select gpci).FirstOrDefault<GPCI>();
}
else
{
view.CPT = (from cpt in DB.CPTs
where cpt.CPT1 == CPTCode && cpt.MOD == MOD
select cpt).FirstOrDefault<CPT>();
view.GPCI = (from gpci in DB.GPCIs
where gpci.PAYID == GPCIPayID && gpci.YEAR == GPCIYear
select gpci).FirstOrDefault<GPCI>();
}
return view;
}
}
现在,我的看法是使用新的视图模型,我想显示的字段:
<div style='float:left; width: 35px; margin: 0; padding: 0; text-align: center; color: #094ab2'>@VirtualAuthtech.CallbackPanelHelper.GetFieldNumber(Model, "WORKCY")</div>
而且我在这一段代码得到一个错误:
public static double GetFieldNumber(object data, string fieldName)
{
object text = DataBinder.Eval(data, fieldName);
if (text == null || text.ToString() == string.Empty)
return 0;
double number = Convert.ToDouble(text);
return number;
}
它的说法我的模型不包含我正在查找的字段的属性。我是否需要告诉它查看我的视图模型的CPT部分?
这是我创造的第一个ViewModel,所以我可能会这样做都是错误的。任何帮助送我正确的方向将不胜感激!
我会说错误是准确的。您的模型(CMSCalculatorViewModel)包含两个属性CPT和GPCI,两者都不命名为“WORKCY”。 –
WORKCY是CPT模型的一个属性,我需要更改哪些内容才能使其知晓? –