JS调用C#
JS调用C#静态方法
1 2 3 4 5 6 7 8 9 10 11
| DrawFlow.razor.cs [JSInvokable] public static void OpenModal() {
isOpenFlowNode = true;
Console.WriteLine("isOpenFlowNode--" + isOpenFlowNode); }
|
1 2 3
| DrawFlow.razor
@inject IJSRuntime JS
|
应用程序下\wwwroot\js\flowCenter.js
1 2 3 4 5 6 7 8 9 10 11 12 13
| flowCenter.js
document.addEventListener('dblclick', function (event) { if (event.target.closest('div.drawflow-node')) {
console.log("111111111"); DotNet.invokeMethodAsync('Platform.Blazor', 'OpenModal'); console.log("222222222"); } });
|
JS调用C#实例方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| DrawFlow.razor.cs [JSInvokable] public async Task OpenModal() {
isOpenFlowNode = true;
Console.WriteLine("isOpenFlowNode--" + isOpenFlowNode); }
protected override async Task OnInitializedAsync() { await base.OnInitializedAsync(); await JS.InvokeVoidAsync("HandleDblClick", DotNetObjectReference.Create(this), nameof(OpenModal)); }
|
注入IJSRuntime
1 2 3 4
| DrawFlow.razor
@inject IJSRuntime JS
|
应用程序下\wwwroot\js\flowCenter.js
1 2 3 4 5 6 7 8
| flowCenter.js
function HandleDblClick(instance, callback) {
instance.invokeMethodAsync(callback); }
|
C#调用JS
1 2 3 4 5 6 7 8 9 10 11 12
| DrawFlow.razor.cs private async Task OnNodeSelectedAsync(string nodeId) { await JS.InvokeVoidAsync("removeColorSelectedNode");
if (_drawflow == null || string.IsNullOrEmpty(nodeId)) { return; } }
|
注入IJSRuntime
1 2 3 4
| DrawFlow.razor
@inject IJSRuntime JS
|
应用程序下\wwwroot\js\flowCenter.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| flowCenter.js
let colorArray = new Array(100).fill(""); const color = ['pink', 'cyan', 'green'];
function removeColorSelectedNode() {
const nodes = document.querySelectorAll('.drawflow-node');
nodes.forEach(node => {
const str = node.id;
const nodeId = parseInt(str.split('-')[1], 10);
color.forEach(c => { if (node.classList.contains(c)) colorArray[nodeId] = c; });
if (node.classList.contains('selected')) { color.forEach(c => { node.classList.remove(c); }); } }); }
|