Javascript 如何在Razor中获取枚举值

Javascript 如何在Razor中获取枚举值,javascript,c#,asp.net-mvc,razor,Javascript,C#,Asp.net Mvc,Razor,我使用了datatables,我想获得指定int变量的Enum值 var client = $('td', row).eq(1).text().trim(); 客户端是一种数字数据类型 我试过这个,但不起作用: var x=@Enum.GetName(typeof(Client),client); 客户端在当前上下文中不存在 提前谢谢 @Enum.GetName(typeof(Client),Client)是在将代码发送到视图之前在服务器上解析的razor代码client是一个javascr

我使用了
datatables
,我想获得指定int
变量的
Enum

var client = $('td', row).eq(1).text().trim();
客户端是一种数字数据类型

我试过这个,但不起作用:

var x=@Enum.GetName(typeof(Client),client);
客户端在当前上下文中不存在

提前谢谢

@Enum.GetName(typeof(Client),Client)
是在将代码发送到视图之前在服务器上解析的razor代码
client
是一个javascript变量,在该点上不存在(它不在范围内)

On选项是将
enum
名称和值的集合传递给客户端,并将其分配给javascript数组,以便对其进行搜索

例如,创建一个类来表示名称和值

public class EnumValues
{
    public int ID { get; set; }
    public string Name { get; set; }
}
在你的控制器里

IEnumerable<EnumValues> clientValues = 
    from Client c in Enum.GetValues(typeof(Client))
    select new EnumValues
    {
        ID = (int)c,
        Name = c.ToString()
    };
在视图中,将其分配给javascript数组,并创建一个函数以返回对应值的名称

var clients = @Html.Raw(Json.Encode(ViewBag.ClientValues));

function getClientName(value)
{
    for(var x = 0; x < clients.length; x++) {
        if (clients[i].ID == value) {
            return clients[i].Name;
        }
    }
    return null;
}

你不能像那样混合javascript和c#代码(一个在客户端上运行,一个在服务器上运行),你不能将js和razor混合。我如何解决这个问题?你只能在服务器->客户端方向混合js和c#/razor。也就是说,在响应发送到浏览器时,在浏览器看到之前,服务器端值可以设置一次。您可以使用ajax将值发布到服务器并返回文本值。或者,您可以将集合/字典或枚举
int
name
值传递给视图,并将其转换为javascript数组,然后在该数组中搜索相应的值。
var clients = @Html.Raw(Json.Encode(ViewBag.ClientValues));

function getClientName(value)
{
    for(var x = 0; x < clients.length; x++) {
        if (clients[i].ID == value) {
            return clients[i].Name;
        }
    }
    return null;
}
var client = $('td', row).eq(1).text().trim();
var clientName = getClientName(client);