Blazor应用程序中@using Microsoft.JSInterop的问题

时间:2019-01-06 18:12:34

标签: c# asp.net-core-2.1 blazor

我有一个使用Razor View创建的客户端屏幕,它只有所有CRUD选项。

问题是当我创建或更改帐户的“正在加载...的所有视图”时,这是不正确的。

只有删除功能可以完美工作,删除客户端时,只会更新注册表

该控制器是使用“实体框架”选项创建的:带有实体名声的具有操作的API控制器

查看我的Razor View的代码。

<?php
    //catch up callbackmethod
    $cb=$_POST['cb'];//is 'method2'

    $json[] = array(
    "cb" => $cb,
    "value" => "ajax2"
    );      

    //encoding array in JSON format
    echo json_encode($json);
?>

1 个答案:

答案 0 :(得分:0)

@Cyber​​lacs,

  1. 您不应使用table元素进行布局。您可以使用此元素显示表格数据。
  2. 您不应在代码中使用form元素,也不应使用按钮的type属性“提交”。当您单击提交按钮时,浏览器将您的表单数据以正常方式发布到服务器。服务器上没有人,但是欢迎发布的表单数据。但是,a,您的按钮的单击事件处理程序也恰好在“回发”:onclick="@(async () => await AddCliente())"之后被调用,它使用Ajax调用服务器,这次使用的是HttpClient。您必须了解,Blazor是一个用于创建SPA应用程序(如Angular)的UI框架。不能以正常方式提交或回发。您的SPA使用HttpClient与服务器通信。 HttpClient为此目的使用了Ajax调用。事实是HttpClient使用JavaScript Fetch API(不是XmlHttpRequest)。

注意:据我所知,内部Blazor代码应该取消表单的提交,在用于执行JSInterop的JavaScript代码中调用event.preventDefault()。

解决方案:删除表单元素,而改用div元素。另外,将按钮的type属性设置为“ button”

使您的组件更简单...

希望这对您有帮助...