我希望传递2值来调用我的脚本,但是我没有这样做,所以返回的服务器标签格式不正确

asp:LinkButton ID="lnkname" runat="server" Text='<%#Eval("movieTitle") %>' Width='500px'

CommandName="cmdLink" PostBackUrl='~/videotest.aspx'

OnClientClick="setSessionValue('video','<%#Eval("movieTitle") %>');"

最佳答案

尝试这样:

OnClientClick='<%# string.Format("setSessionValue(\"video\", {0});", Eval("movieTitle")) %>'


甚至更好地确保您使用JavaScriptSerializer类正确编码电影标题:

OnClientClick='<%# string.Format("setSessionValue(\"video\", {0});", new JavaScriptSerializer().Serialize(Eval("movieTitle"))) %>'


是的,我同意,那些WebForms真是一团糟。您可能会将此代码外部化为以下代码中的函数:

public string FormatJs(object movieTitle)
{
    return string.Format(
        "setSessionValue(\"video\", {0});",
        new JavaScriptSerializer().Serialize(movieTitle)
    );
}


接着:

OnClientClick='<%# FormatJs(Eval("movieTitle")) %>'

09-25 20:02