Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.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# 带有内部方法的链接按钮中的javascript_C#_Javascript_Asp.net_Quotes - Fatal编程技术网

C# 带有内部方法的链接按钮中的javascript

C# 带有内部方法的链接按钮中的javascript,c#,javascript,asp.net,quotes,C#,Javascript,Asp.net,Quotes,我有一个OnClientClick,它询问用户是否确定要使用用户选择的语言来执行此操作。但是由于太多的引用和混合,它不起作用。有人知道怎么做吗 <asp:LinkButton ID="btnDelete" runat="server" ToolTip="Sil" CssClass="red" OnClick="btnDelete_OnClick" CommandArgument='<%# Item.UId %>' OnClientClick='<%= "return c

我有一个OnClientClick,它询问用户是否确定要使用用户选择的语言来执行此操作。但是由于太多的引用和混合,它不起作用。有人知道怎么做吗

<asp:LinkButton ID="btnDelete" runat="server" ToolTip="Sil" CssClass="red" OnClick="btnDelete_OnClick" CommandArgument='<%# Item.UId %>' 
OnClientClick='<%= "return confirm('" + MULTILANGG("Areyousureyouwanttodeletethis") +"')"%>'><i class="icon-trash bigger-130"></i></asp:LinkButton>

最简单的方法是将其拆分为自己的js函数

函数confirmDelete(){ 返回确认(“”) }

然后


你接近了!试试这个:

<asp:LinkButton ID="btnDelete" runat="server" ToolTip="Sil" CssClass="red" 
    OnClick="btnDelete_OnClick" CommandArgument='<%# Item.UId %>' 
    OnClientClick="return confirm('<%= MULTILANGG("Areyousureyouwanttodeletethis") %>')">
    <i class="icon-trash bigger-130"></i></asp:LinkButton>

您可以在外部的正则脚本标记中定义字符串,这样您就不需要在标记中使用任何服务器代码:

<script type="text/javascript">
    var _areYouSure = "<%= MULTILANGG("Areyousureyouwanttodeletethis") %>";
</script>

<asp:LinkButton ... OnClientClick="return confirm(_areYouSure);" ...></asp:LinkButton>

var _areYouSure=“”;
编辑

这里有一个你可能更喜欢的模式——因为你已经有了某种翻译文件,你可以通过在页面顶部存储一个包含所有翻译的对象(用javascript定义)来组织事情。它们将被组织在一个地方,然后您可以在javascript中的任何地方使用它们

var _resources = <%= JsonConvert.SerializeObject(new {
    areYouSureDelete = MULTILANGG("Areyousureyouwanttodeletethis"),
    welcome = MULTILANGG("Welcome"),
    submit = MULTILANGG("Submit"),
    cancel = MULTILANGG("Cancel")
}) %>;

<asp:LinkButton ... OnClientClick="return confirm(_resources.areYouSureDelete);" ...></asp:LinkButton>
var\u资源=;

请注意,字符串是在C#中构建的,因此所有转义都会得到处理,最终会得到一个有效的javascript对象。

当您说“太多引号混合”时,是因为MULTILANGG(“AreyouSureYouWantDeleteThis”)也有引号?是的,这正是我所指的错误;服务器标记不能包含结构。我知道我可以做我不喜欢做的事情,如果可能的话。如果你想让事情比仅仅一个变量漂浮在那里更有条理,请使用建议进行编辑。我知道我可以做我不喜欢做的事,如果可能的话,IMO更干净的方法是将所需的所有服务器端数据转储到JSON数据包中,并将其作为变量从javascript中读取。它可以是src'd(类似于jsonp),也可以作为js变量放入页面中。我认为最好尽量减少两种语言混合的面积。
var _resources = <%= JsonConvert.SerializeObject(new {
    areYouSureDelete = MULTILANGG("Areyousureyouwanttodeletethis"),
    welcome = MULTILANGG("Welcome"),
    submit = MULTILANGG("Submit"),
    cancel = MULTILANGG("Cancel")
}) %>;

<asp:LinkButton ... OnClientClick="return confirm(_resources.areYouSureDelete);" ...></asp:LinkButton>