2014-03-03 46 views
2

我想限制我的.cshtml文件,以便內聯c#代碼只能關聯到當前模型。所以我想限制允許的名稱空間或類似的東西。限制嵌入式代碼的視圖與其他模型相關的代碼

背景是我需要應用程序用戶(系統的管理員 - 不是Web訪問者)編輯的視圖文件夾。 我的一些客戶想要顯示圖像,有些則不會。 因此,我需要在的可以做什麼控制,使他們不能做

<span> 
    title 
@{ 
    MyApp.Database.DeleteAll() 
    or 
    System.File.Read() 
} 

但我希望他們能夠做到

@foreach(var img in @Model.Images){ 
     <img src="@img" /> 
} 

用戶將無法訪問服務器或到其他任何東西(比如webconfig等)。他們將通過Web界面編輯.cshtml文件。

可以說我有一個頁面,顯示上傳圖片的集合。 某些管理員想要將圖像作爲滑塊顯示爲簡單的ul 這對應用程序的其餘部分沒有任何影響,因爲所有內容都鬆散地連接在一起。

+4

難以理解... –

+0

您可以爲您的視圖添加通用模型,但仍然無法解決您添加到應用程序中的巨大安全循環漏洞。 –

+5

您絕對應該重新考慮您的項目,你打算做的是一個非常糟糕的主意。必須有更安全的方法來實現你想要做的事情。也許你可以詳細闡述你想要做什麼。 – Robert

回答

1

這是不可能的,並創建巨大的安全漏洞,因爲Razor允許運行任何C#代碼。

你可以改爲讓他們在不同的模板引擎中創建模板。有例如Handlebars for C#這應該允許做你想要的。

+0

是的,那是我的問題:)。所以我想我只需要去模板和剝離c#內聯代碼。感謝提示,但我已經有了一個模板系統。我只需要添加一些剝離 – Mikael