当通过值表单aspx.cs页面时,警报显示在javascript中未定义

时间:2011-11-16 09:00:39

标签: c# javascript asp.net

 string locationName = "Mumbai";
    Page.ClientScript.RegisterStartupScript(Type.GetType
    ("System.String"), "addScript", "PassValues(" + locationName + ")", true);

在javascript中我的代码包含

<script language="javascript" type="text/javascript">
        function PassValues(locationName)
            {
             var txtValue = locationName; 
             alert(txtValue);
            }
</script>

此处警报显示undefined而不是“Mumbai”

5 个答案:

答案 0 :(得分:4)

尝试在后面的代码中将变量放在变量周围。如果没有它们,浏览器会认为您正在传递一个名为Mumbai的变量。你真正想要传递的是字符串'Mumbai'。您收到消息“未定义”,因为客户端代码中没有名为Mumbai的变量。

 string locationName = "Mumbai";
    Page.ClientScript.RegisterStartupScript(Type.GetType
    ("System.String"), "addScript", "PassValues('" + locationName + "')", true);

答案 1 :(得分:2)

这对我来说很完美:

<强> Default.aspx.cs

using System;
using System.Web.UI;

namespace WebApplication2
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string locationName = "Mumbai";

            Page.ClientScript.RegisterStartupScript(Type.GetType("System.String"), "addScript", "PassValues('" + locationName + "')", true);
        }
    }
}

Default.aspx (在创建用于测试的新Web应用程序时,从Visual Studio 2010自动生成为内容页面)

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeBehind="Default.aspx.cs" Inherits="WebApplication2._Default" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">

<script language="javascript" type="text/javascript">
    function PassValues(locationName) {
        var txtValue = locationName;
        alert(txtValue);
    }
</script>

</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <h2>
        Welcome to ASP.NET!
    </h2>
</asp:Content>

答案 2 :(得分:1)

只是为了快速删除您的问题,您只需使用内联ASP.NET 即可快速运行您的应用程序:

<script language="javascript" type="text/javascript">
        function PassValues(locationName)
        {
           var txtValue = locationName; 
           alert(txtValue);
        }
        PassValues('<%= locationName %>');
</script>

但问题是,您的代码在浏览器中呈现为:

PassValues(Mumbai);

这意味着JavaScript会尝试查找名为 Mumbai 的变量,并且由于找不到它,因此会显示 undefined 消息。因此,您应该将代码更正为:

"PassValues('" + locationName + "')"

答案 3 :(得分:1)

您需要引用参数

更改:

"PassValues(" + locationName + ")" 

"PassValues('" + locationName + "')"

答案 4 :(得分:1)

您错过了在PassValues javascript函数

中作为字符串传递的引号
 string locationName = "Mumbai";
    Page.ClientScript.RegisterStartupScript(Type.GetType
    ("System.String"), "addScript", "PassValues('" + locationName + "')", true);