在ASP.NET MVC中,如何将ASP.NET razor字符串传递给javascript onclick函数?

时间:2015-08-10 02:18:25

标签: javascript asp.net razor onclick

我得到的问题是默认情况下ASP.NET Strings的值是按值传递到javaScript函数而没有它们的类型。例如,“1”作为1传入。“a”作为a传入,但随后发生错误,因为从未定义过。

这是我正在创建的表。

   <table border="1">
    <tr>
        <td>Search Result Number</td>
        <td>ID</td>
        <td>Topic</td>
        <td>Speaker</td>
        <td>Verse</td>
        <td>Duration</td>
        <td>Date</td>
        <td>Audience Type</td>
        <td>Type</td>
        </tr >
    @{
       int Search_Result_Number = 1;
    }
    @foreach (Audio audio in Model)
    {
        string Topic = audio.Topic;

        if (Topic.Equals(""))
        {
            Topic = "None_Given";
        }

        string Speaker = audio.Speaker;

        if (Speaker.Equals(""))
        {
            Speaker = "None_Given";
        }

        string Verse = audio.Verse;

        if (Verse.Equals(""))
        {
            Verse = "None_Given";
        }

        string Duration = audio.Duration;

        if (Duration.Equals(""))
        {
            Duration = "None_Given";
        }

        string Date = audio.Date;

        if (Date.Equals(""))
        {
            Date = "None_Given";
        }

        string Type = audio.Type;

        if (Type.Equals(""))
        {
            Type = "None_Given";
        }

        string Audience_Type = audio.Audience_Type;

        if (Audience_Type.Equals(""))
        {
            Audience_Type ="None_Given"; 
        }
        <tr onclick="Displays_Audio_Info(@audio.Date)">
            <td>@Search_Result_Number</td>
            <td>@audio.Id</td>
            <td>@Topic</td>
            <td>@Speaker</td>
            <td>@Verse</td>
            <td>@Duration</td>
            <td>@Date</td>
            <td>@Audience_Type</td>
            <td>@Type</td>
            </tr>
        Search_Result_Number++;
    }

</table> 

这是我的javascript函数。

    function Displays_Audio_Info(date) {
   document.getElementById("Date").innerHTML = date;


}

我的Date列下的第一个值是a。

这是我得到的错误,因为“a”被处理为变量名,而不是字符串。

http://localhost:18931/a

第35行第26行未处理的异常

0x800a1391 - JavaScript运行时错误:'a'未定义

1 个答案:

答案 0 :(得分:0)

从您编辑的代码中,您似乎正在设置ID为&#34;日期&#34;到DateTime(字符串)?

如果是这样,为什么不通过<tr onclick="Displays_Audio_Info(@audio.Date.ToShortDateString())">? 这将为您的Displays_Audio_Info()提供一个字符串参数。

作为旁注,您在视图中进行了大量处理,我建议您创建一个视图模型,该模型已使用集合中每个项目的正确值填充,而不是在您的所有项目中执行所有操作视图。