2012-04-05 32 views
1

我正在使用MVC3框架來設計一個網站。我從ms sql數據庫中取出控制器中的數據,並將表中的一列命名爲「do」。當我嘗試創建視圖以使用@Model關鍵字(例如:@ Model.do)顯示信息時,出現錯誤:在asp.net mvc3視圖中使用關鍵字

標識符預期; do是一個關鍵字。

我想知道是否有方法來使用MVC3視圖中的列名(這是關鍵字在C#中)或我只能選擇重命名數據庫表中的列?

謝謝!

回答

2

你在C#中使用任何關鍵字的方法是用前綴它重新映射@」。例如,你會看到很多

@Html.ActionLink("My Link", "Action", null, new {@class="abc"}) 

將「class」屬性添加到「a」標籤。這是合法的代碼:

class Program 
{ 
    static void Main(string[] args) 
    { 
     Entity e = new Entity(); 
     [email protected] = 10; 
    } 
} 

class Entity 
{ 
    public int @do 
    { 
     get; 
     set; 
    } 
} 

,所以是

public void DoSomething(int @do) 
{ 
    for (int i = 0; i < @do; i++) 
    { 
     // process i 
    } 
} 

如果您正在使用ASPX爲您的視圖引擎,以下是罰款:

<%= [email protected] %> 

在Razor視圖,以下也是有效的:

@Html.Raw([email protected]) 

@(@[email protected]) 
+0

+1,關於使用'@'符號轉義關鍵字的好處。 – 2012-04-06 07:44:07

1

沒有辦法在視圖模型(.cs類)中定義變量do

"Error 1 Invalid token 'do' in class, struct, or interface member declaration" 

話雖這麼說,你可以在你的模式,使列do被映射到外地do_field

public class Entity 
{ 
[Column("do")] 
public string do_field { get; set; } 
} 
+0

謝謝你的回覆。儘管我使用實體框架模型來訪問數據庫,但我仍然可以在其中重新映射。 – Learner 2012-04-05 21:40:04

+0

@學習者 - 這是正確的。您定義的模型由EF使用,可以在其中包含此數據註釋。或者,您可以使用流暢的api(http://msdn.microsoft.com/zh-cn/library/hh295844(v=vs.103).aspx)來定義映射。 – 2012-04-05 21:42:17

+0

這個答案不正確。看到我的答案。 – bloudraak 2012-04-06 06:12:40

相關問題