这是“休息时”的代码:
var report_parms = {
GUID: "@Model.GUID",
SerialNumber: "@Model.SerialNumber",
ReportName: "@Model.ReportName"
};
这是在运行时看起来像是在单步执行jQuery:
var report_parms = {
GUID: "",
SerialNumber: "",
ReportName: ""
};
...这是我得到的例外,因为这些字符串是空的:
System.NullReferenceException未被用户代码处理 Message =对象引用未设置为对象的实例。 堆栈跟踪: 在TLDReporter_SL.App.Application_Startup(对象发送者,StartupEventArgs e) 在MS.Internal.CoreInvokeHandler.InvokeEventHandler(UInt32 typeIndex,委托handlerDelegate,Object sender,Object args) 在MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj,IntPtr unmanagedObjArgs,Int32 argsTypeIndex,Int32 actualArgsTypeIndex,String eventName,UInt32 flags)
...在这个C#方法中:
private void Application_Startup(object sender, StartupEventArgs e)
{
ScriptObject Parms = (ScriptObject)HtmlPage.Window.Invoke("get_report_parms");
string ReportName = Parms.GetProperty("ReportName").ToString(); <--- This is the line that blows up
switch (ReportName)
{
default:
this.RootVisual = new ReceiptRpt();
break;
}
}
所以我的问题是(这是遗漏的代码,我试图解决):那个“@ Model.Bla”的东西应该是什么?有人熟悉这种“神奇”吗?对我来说这似乎很奇怪:
0)单词“model”大写(“Model”),而上面Razor语法中引用的模型不是:
@model TLDReporter.Models.TLDSalesReceiptCriteriaModel
和:
1)这些“替换参数”包含在引号中。
这是完全“家庭[成长,旋转]”的东西,我将不得不解开自己,或者这是一件众所周知的事情?
答案 0 :(得分:1)
“@ Model.Bla”应该做什么?
Razor语法意味着简单地渲染页面模型的属性“Bla”。这一行:
@model TLDReporter.Models.TLDSalesReceiptCriteriaModel
表示页面模型的类型。您必须找到控制器代码以确切地确定如何返回该类的实例(或不返回)。您应该能够使用返回“ActionResult”或类似方法的方法找到类似“XyzController”的类,其类似于:
var model = new TLDReporter.Models.TLDSalesReceiptCriteriaModel();
return View(model);