2012-04-05 33 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

相关问题