[英]T4MVC: How to use with say Url.Action?
我們可以編寫T4MVC文檔提示
@Url.Action(MVC.Dinners.Delete(Model.DinnerID))
代表老式和字符串硬編碼
@Url.Action("Delete", "Dinners", ...))
(見附圖)
也許我嚴重缺少一些東西,但第一個版本實際上會調用控制器的動作方法,顯然不是目標+有副作用。 我已經使用resharper靜態跟蹤方法調用,並且還調試了:實際上調用了該方法,其中(再次)不是目標。
Url.Action確實具有接受ActionResult的重載,這就是為什么T4MVC版本不會導致編譯錯誤的原因。 如果可以在沒有副作用的情況下調用操作方法,則正確呈現的URL也是如此。
我的目標是在視圖中渲染動作URL,換句話說,我真的在尋找@Url.Action("Delete", "Dinners", ...))
的替代方案。
這是我發現的:
@Url.Action(MVC.Dinner.ActionNames.Delete, MVC.Dinner.Name)
我錯過了什么? (為什么我們會調用實際的動作方法,只是為了渲染它的url?)
那是致命的。 我在問題中所描述的一切都是真的,仍然是虛假警報。
我的action方法的返回值是string 。 請不要問為什么,它是完全合法的,邏輯上該方法是無效的(從javascript調用POST,並忽略響應)
該字符串返回值欺騙了T4MVC生成器,因此該方法實際上是由@Url.Action(MVC.Dinners.Delete(Model.DinnerID))
將方法的返回值更改為ActionResult(並且不執行任何其他操作)后,T4MVC生成的代碼將更改,並且不再調用操作方法
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.