【问题标题】:In ASP.NET MVC how do I pass in ASP.NET razor strings into a javascript onclick function?在 ASP.NET MVC 中,如何将 ASP.NET 剃须刀字符串传递给 javascript onclick 函数?
【发布时间】:2015-08-10 02:18:25
【问题描述】:

我遇到的问题是,默认情况下,ASP.NET 字符串的值是按值传递给 javaScript 函数的,而没有它们的类型。例如,“1”作为 1 传入。“a”作为 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;


}

我的日期列下的第一个值是 a。

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

http://localhost:18931/a 中第 35 行第 26 列未处理的异常

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

【问题讨论】:

  • 您有任何代码可以向我们展示以及您在尝试时遇到的错误吗?
  • 好的,等我几分钟

标签: javascript asp.net razor onclick


【解决方案1】:

从您编辑的代码中,您似乎正在尝试将 id 为“Date”的元素设置为 DateTime(字符串)?

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

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

【讨论】:

    猜你喜欢
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 2014-06-13
    • 1970-01-01
    • 2011-06-09
    • 2013-08-21
    • 1970-01-01
    相关资源
    最近更新 更多