2013-08-20 73 views
0

这是代码,当“静止”:为什么我的“替换参数”变成空字符串?

var report_parms = { 
    GUID: "@Model.GUID", 
    SerialNumber: "@Model.SerialNumber", 
    ReportName: "@Model.ReportName" 
}; 

这是它看起来像在运行时,通过jQuery的步进时:

var report_parms = { 
    GUID: "", 
    SerialNumber: "", 
    ReportName: "" 
}; 

...这是异常我得到,因为这些字符串是空的:

System.NullReferenceException未处理的用户代码 消息=对象引用未设置为对象的实例。 堆栈跟踪: 在TLDReporter_SL.App.Application_Startup(对象发件人,StartupEventArgs E) 在MS.Internal.CoreInvokeHandler.InvokeEventHandler(UInt32的typeIndex,代表handlerDelegate,对象发件人,对象参数) 在MS.Internal.JoltHelper.FireEvent(IntPtr的unmanagedObj,IntPtr的unmanagedObjArgs,的Int32 argsTypeIndex,的Int32 actualArgsTypeIndex,字符串eventName的,UInt32的标志)

...在这个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; 
     } 
    } 

所以我的问题是(这是遗留代码我想grok):什么是“@ Model.Bla”的东西应该做的?有人熟悉这种“魔术”吗?这似乎很奇怪,我认为:

0)单词“模型”是大写(“模型”),而在上述剃刀语法参考的模式是不是:

@model TLDReporter.Models.TLDSalesReceiptCriteriaModel 

而且!:

1)这些“替换参数”用引号括起来。

这是什么东西完全“家庭[成长,纺]”,我将不得不解开自己,或者是这样的事情已知的数量?

回答

1

什么是“@ Model.Bla”的东西应该做的?

Razor语法的意思是简单地渲染页面模型的属性“Bla”。此行:

@model TLDReporter.Models.TLDSalesReceiptCriteriaModel 

指示页面模型的类型。你必须找到控制器代码来确定该类的实例是如何返回(或不)的。你应该能够找到类似“XyzController”的方法返回“ActionResult”或类似的,有这样的事情:

var model = new TLDReporter.Models.TLDSalesReceiptCriteriaModel(); 
return View(model); 
+0

啊,这是有道理的;我一直在模型/控制器代码中进行研究,这些代码中有很多东西放在那里然后放弃(死代码),所以也许我无意中将一些仍在呼吸的代码隐藏起来。 –

+0

即使在我有的最旧版本的TLDSalesReceiptCriteriaModel中,也没有GUID,SerialNumber或ReportName的声明;他们只是在控制器... –

+0

@ClayShannon现在很奇怪,因为视图很明显似乎假设他们是模型的属性...那么他们在控制器中的角色是什么? – McGarnagle