如何将C#中的List转换为JavaScript中的数组,并检查数组项

3

我有一个与数据库相关的模型列表和项目。我想将该项目放入JavaScript数组中。然后,当我在文本框中输入值并单击按钮时,系统会检查数组中是否有这些值。

当我尝试运行此代码时,它无法正常工作。有任何想法或建议吗?

模型:

public List<string> listponumber { get; set; }

public void getlist()
        {
            var listpo = new List<string>();
            SqlConnection connection = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["dbconnection"].ConnectionString);
            connection.Open();

            SqlCommand cmdponumber = new SqlCommand("Select DISTINCT ponumber From t_transaction ORDER BY ponumber", connection);

            SqlDataReader rdr = cmdponumber.ExecuteReader();
            while (rdr.Read())
            {
                listpo.Add(rdr.GetString(0).ToString());
            }

            connection.Close();
            listponumber = new List<string>(listpo);
        }

视图:
<script type="text/javascript">

    $(document).ready(function () {

        $("#btntest").click(function () {
            var ponumber = [@Model.listponumber]
            var txtvalues = document.getElementByID("textbox").value;
            if (ponumber.indexOf(txtvalues) > -1 ) {
                alert('Array');
            } else { 
              alert('not array');
            }
        });
</script>

你可能想看一下这个问题:https://dev59.com/amw15IYBdhLWcg3wLIzI,因为它讨论的基本上是同样的事情(尽管使用的是日期而不是字符串 - 但概念是相同的)。 - Tim
@Tim 谢谢回复,我尝试了但是不起作用,在调用时出现语法错误。变量activeDates = @Html.Raw(Json.Encode(Model.ActiveDates)); - putra1908
如果 listponumber 是你的模型中属性的名称,则需要使用 @Html.Raw(Json.Encode(Model.listponumber))。 - user3559349
@stephen 是的,我在使用它,但是当我用“;”关闭时出现了语法错误。 - putra1908
1个回答

12

你可以使用以下方法将 C# List 转换为 JavaScript 数组

<script>
    var javascriptArray = @Html.Raw(Json.Encode(Model.ListToConvertToJavascript));
</script>

这将创建一个Json对象,其中包含您的模型中列表中的数据,并且您将能够在纯Javascript中进行迭代。

语法错误可能是IDE告诉您正在使用Javascript解析器不理解的语法,即RAZR句子@Html(...); 您可以忽略它。

使用以下内容进行测试:

for(int i = 0; i < $(javascriptArray).lenght; i++){
    alert(javascriptArray[i]);
}

或者打开您的浏览器开发者控制台,键入正在创建的数组名称,以查看它是否由您的模型列表数据填充。


请确保在Json.Encode(Model.ListToConvertToJavascript)中使用与模型中列表相同的名称,其中ListToConvertToJavascript是您列表的名称:listponumber。 - jcruzz92
@putra1908 JavaScript希望您将代码中的@html.raw(...)部分用''括起来以将其视为字符串,但这样做会使您无法像数组一样迭代ponumber。它将变成一个字符串,JavaScript会尝试解析它,因为您尝试使用它。 - jcruzz92

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接