2013-08-20 70 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