C# 。net 后台调用js带参方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 。net 后台调用js带参方法相关的知识,希望对你有一定的参考价值。

strhtml += "<tr id='" + i + "'><td colspan='2' ><input readonly='readonly' class='txtinput' type='text' style='width:95%' runat='server' name='txtc" + i + "' id='txtc" + i + "' value='" + str + "' /><a style='cursor:pointer; font-size:13px' onclick='javascript:Getdate()'>详情</a></td></tr>";

需要在js方法 Getdate() 传递参数 请问大大们 如何拼接

使用转译字符"\\"

例如:

 

  str=" <a style=\\"cursor:pointer; font-size:13px\\" onclick=\\"javascript:Getdate(\\'"+i+"\\',\\'"+i+"\\');\\">详情</a>"


追问

这样的凭接 无法调用js 中 的 Getdate(i,i)

追答

可以的,只是你这里是a标签,试试用<a href="javascript:Getdate(\'"+i+"\',\'"+i+"\');" 如果坚持用onclick事件的话,在a标签里面加上 href="javascript:;"

追问

谢谢 使用href 是可以的

参考技术A 可以直接在head中添加js
<head runat="server">
<title></title>
<script type="text/javascript">
function Getdate(x,y)
......

</script>
在控件的onclick属性添加:onclick="Getdate(x,y)",把x和y改成你的参数就好了追问

我没直接的那个控件,而是通过拼接而来的 ,所以也要拼接一个事件给他

thymeleaf的初次使用(带参请求以及调用带参js方法)

之前对于前端框架接触较少,第一次接触thymeleaf,虽说看起来并不复杂但我还是花费了好一会儿才弄懂。

话不多少下面就简单说一下我在项目中的应用。

首先是java代码 controller层 将需要在前端展示的信息放入model中:

@RequestMapping("getAll")
    public String getAll(Model model){
        List<ScheduleJob> list = scheduleJobService.getAllJob();
        model.addAttribute("list", list);
        return "sch/quartz/list";
    }

之后便是在前端html页面的遍历

 1 <tr th:each="job:${list}">
 2             <td th:text="${job.name }">任务名</td>
 3             <td th:text="${job.group }">任务组</td>
 4             <td th:text="${job.status }">状态</td>
 5             <td th:text=‘${job.cronExpression }‘></td>
 6             <td th:text="${job.className }">类名</td>
 7             <td th:text="${job.description }">描述</td>
 8             <td><a href="#" th:href="@{/quartz/pause(name=${job.name},group=${job.group})}">暂停</a></td>
 9             <td><a href="#" th:href="@{/quartz/resume(name=${job.name},group=${job.group})}">恢复</a></td>
10             <td><a href="#" th:href="@{/quartz/run(name=${job.name},group=${job.group})}">执行一次</a></td>
11             <td><a href="#" th:href="@{/quartz/delete(name=${job.name},group=${job.group})}">删除</a></td>
12             <td><button id="edit" th:name="${job.name}" th:id="${job.group}" onclick="test(this)">修改cron表达式</button></td>
13         </tr>

这里直接在<tr>标签中  用 th:each 放入需要遍历的内容,以及定义变量名;在<td>标签中用th:text来展示内容。

在<a>标签中用 普通的href不能实现带参的接口请求,所以需要使用 th:href 的这种语法来实现带参的接口请求,参数用()跟在后面就可以。

至于调用js的带参方法就需要用12行那种办法 将参数作为 th 标签的name或者id传入方法中,具体的js方法如下;

1 function test(obj){
2         var cron = $("#cron").val();
3         var name = $(obj).attr("name");
4         var group = $(obj).attr("id");
5         $.post("edit",{"name":name,"group":group,"cron":cron},function(){
6             alert("更新成功!!!");
7             window.location.reload();
8         });
9     }

这样就能实现js带参方法的调用,目前来说我所知道的可以实现的就是这种方式。

补充一点,前端遍历的实体类需要重写toString方法,并且必须是如下格式的:

 1 @Override
 2     public String toString() {
 3         StringBuilder builder = new StringBuilder();
 4         builder.append("{name:\"");
 5         builder.append(name);
 6         builder.append("\", group:\"");
 7         builder.append(group);
 8         builder.append("\", cronExpression:\"");
 9         builder.append(cronExpression);
10         builder.append("\", status:\"");
11         builder.append(status);
12         builder.append("\", description:\"");
13         builder.append(description);
14         builder.append("\", className:\"");
15         builder.append(className);
16         builder.append("\"}");
17         return builder.toString();
18     }

这样才能在页面上成功遍历。

对于thymeleaf,目前我也就掌握了这些简单的使用。

以上是关于C# 。net 后台调用js带参方法的主要内容,如果未能解决你的问题,请参考以下文章

.Net(C#) CefSharp Chrome 浏览器控件后台执行Iframe中的Js代码的方法

wpf中js调用C#后台方法,使用框架CefSharp

ASP.NET前后台互相访问

JS直接调用C#后台方法(ajax调用)

C#后台调用js方法无效果,未解决。

asp.net js调用后台方法