Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在asp.net mvc3视图中使用关键字_C#_Asp.net Mvc 3_Keyword_Asp.net Mvc Views - Fatal编程技术网

C# 在asp.net mvc3视图中使用关键字

C# 在asp.net mvc3视图中使用关键字,c#,asp.net-mvc-3,keyword,asp.net-mvc-views,C#,Asp.net Mvc 3,Keyword,Asp.net Mvc Views,我正在使用MVC3框架设计一个网站。我从ms sql数据库中提取控制器中的数据,表中的一列被命名为“do”。当我尝试创建一个视图来使用@Model关键字(例如:@Model.do)显示信息时,我得到一个错误: 预期标识符;do是一个关键词 我想知道是否有办法在MVC3视图中使用列名(即c#中的关键字),还是只能选择重命名数据库表中的列 谢谢 无法在viewmodel(.cs类)内部定义变量do 也就是说,您可以在模型中重新映射,以便将列do映射到字段do\u字段 public class Ent

我正在使用MVC3框架设计一个网站。我从ms sql数据库中提取控制器中的数据,表中的一列被命名为“do”。当我尝试创建一个视图来使用@Model关键字(例如:@Model.do)显示信息时,我得到一个错误:

预期标识符;do是一个关键词

我想知道是否有办法在MVC3视图中使用列名(即c#中的关键字),还是只能选择重命名数据库表中的列


谢谢

无法在viewmodel(.cs类)内部定义变量
do

也就是说,您可以在模型中重新映射,以便将列
do
映射到字段
do\u字段

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

在C#中使用任何关键字的方式是在其前面加上“@”。例如,你会经常看到这一点

@Html.ActionLink("My Link", "Action", null, new {@class="abc"}) 
将“class”属性添加到“a”标记。这是合法代码:

class Program
{
    static void Main(string[] args)
    {
        Entity e = new Entity();
        e.@do = 10;
    }
}

class Entity
{
    public int @do
    {
        get;
        set;
    }
}
事实也是如此

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


谢谢你的回复。虽然我使用实体框架模型访问数据库,但我仍然可以在其中重新映射。@Learner-这是正确的。EF使用的您定义的模型中可以包含此数据注释。或者,您可以使用fluent api()来定义映射。@WernerStrydom-正确的做法是显示使用关键字时显示的错误,以及显示如何重新映射实体。我没有意识到
@
可以像那样用作转义属性,因此这里唯一不正确的陈述更不完整,因为您的答案指出,您可以使用
@
符号转义关键字。@TravisJ我认为您给出了很好的建议。我的回答是针对你的第一句话。@WernerStrydom:我尝试了你关于避开关键词的建议,效果非常好。感谢您为这个问题提供了另一种解决方案!!
public void DoSomething(int @do)
{
    for (int i = 0; i < @do; i++)
    {
        // process i
    }
}
<%= Model.@do %>
@Html.Raw(Model.@do)
@(@Model.@do)