Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET单引号转换为'_C#_Asp.net_Quotes - Fatal编程技术网

C# ASP.NET单引号转换为'

C# ASP.NET单引号转换为&#39;,c#,asp.net,quotes,C#,Asp.net,Quotes,注意:这很可能是一个双重问题,但由于我没有找到一个明确的答案,我还是要问 在ASP.NET中,我想向复选框的onclick事件添加一些JavaScript。我已将案例简化为: <asp:CheckBox ID="TestCheckBox" runat="server" onclick="alert('test');" Text="Test" /> 有人知道发生了什么事吗?或者如何修复/避免它 首先,asp复选框控件不将onclick作为有效属性 所以你可以做两件事: 1-如果您不需

注意:这很可能是一个双重问题,但由于我没有找到一个明确的答案,我还是要问

在ASP.NET中,我想向复选框的onclick事件添加一些JavaScript。我已将案例简化为:

<asp:CheckBox ID="TestCheckBox" runat="server" onclick="alert('test');" Text="Test" />

有人知道发生了什么事吗?或者如何修复/避免它

首先,asp复选框控件不将onclick作为有效属性

所以你可以做两件事:

1-如果您不需要服务器端的值,可以只选中普通复选框而不是asp复选框

2-如果您需要值服务器端,请添加runat=“server”属性,并在复选框中放置和ID,以便您可以在代码中引用它

<input type="checkbox" id="chk1" onclick="alert('hello');" runat="server" />

当我们将项目从.NET 3.5迁移到.NET 4.0时,属性值中的单引号也存在同样的问题。它将属性值中的所有单引号转换为
&39。所以我们回到了.NET3.5


这是一个.NET4.0的东西。您可以阅读有关此问题的更多信息。

我最近遇到了这样一个问题,在数据绑定发生后,一个控件正在更新。修复方法是在涉及的中继器的OnItemDatabound服务器事件期间添加onchange javascript:

protected void rptTarifDetails_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item)
    {    TextBox proposedPrice = e.Item.FindControl("txtProposedUnitSell") as TextBox;
        proposedPrice.Attributes.Add("onchange", "CalcCommissionSingleLine(this,'None','" + ((Repeater)sender).ClientID + "', false, " + rowCount.Value + ")");

我也面临同样的问题。我搜索了很多,最后通过将页面的内容类型更改为application/xhtml+xm解决了这个问题

<%@ Page Language="C#" AutoEventWireup="true" EnableViewState="true" Debug="true" ContentType="application/xhtml+xm" %>


希望,此信息将帮助您..

如果其他人发现此问题,我可以通过这种方式从自定义控件中插入属性,而无需对值进行html编码。这是一个调用异步函数以确认按钮按下操作的按钮示例

关键是使用writer.AddAttribute(),它具有禁用HTMLEncode步骤的标志。这似乎还取决于您使用的asp.net版本。这在.NET4.6.1中起作用

 public class ConfirmationLinkButton : LinkButton
{
    protected override void AddAttributesToRender(HtmlTextWriter writer)
    {
        base.AddAttributesToRender(writer);
        string script = "confirmAsync('" + ConfirmationMessage.Replace("'", "\\'") + "', " + Callback() + ");" +
                        "return false;";
        writer.AddAttribute(HtmlTextWriterAttribute.Onclick, script, false);
    }

    private string Callback()
    {
        return "(data) => { if (data===true) {" + Page.ClientScript.GetPostBackEventReference(this, "") + "}}";
    }

    public string ConfirmationMessage { get; set; }
}

如果你想停止输入单引号 试试这个


为什么这很重要?它们不是必需的,但它是有效的HTML,工作正常。
<%@ Page Language="C#" AutoEventWireup="true" EnableViewState="true" Debug="true" ContentType="application/xhtml+xm" %>
 public class ConfirmationLinkButton : LinkButton
{
    protected override void AddAttributesToRender(HtmlTextWriter writer)
    {
        base.AddAttributesToRender(writer);
        string script = "confirmAsync('" + ConfirmationMessage.Replace("'", "\\'") + "', " + Callback() + ");" +
                        "return false;";
        writer.AddAttribute(HtmlTextWriterAttribute.Onclick, script, false);
    }

    private string Callback()
    {
        return "(data) => { if (data===true) {" + Page.ClientScript.GetPostBackEventReference(this, "") + "}}";
    }

    public string ConfirmationMessage { get; set; }
}
onkeypress="if (event.keyCode==39) event.returnValue = false;"
<asp:TextBox ID="TextBox1" runat="server"   onkeypress="if (event.keyCode==39) event.returnValue = false;"
></asp:TextBox>