0

我正在尝试从文本框中获取电子邮件 ID 值,并希望在 cs 文件中以 api 方法发送它。但它不起作用,我尝试了下面的代码..任何人都可以帮助我。

价值已成功进入服务文件,我有警报但没有进入 cs 文件。

我在前端使用 Angular,在后端 API 中使用 .Net 核心。这也是 Aspnetzero 项目。

首先下面是 register.component.html 文件代码:

<div class="form-group">
                <input #emailAddressInput="ngModel" 
                       placeholder="{{'EmailAddress' | localize}} *" 
                    [(ngModel)]="model.emailAddress" name="EmailAddress" required maxlength="256"/>
            </div>

            <div class="pb-lg-0 pb-5">
                <button type="button" class="btn btn-primary blue float-right"
                 (click)="checkUserExist(model.emailAddress)">Continue</button>
            </div>

下面是 register.component.ts 文件中的代码

checkUserExist(emailid): void {
        this._accountService.registerHostLevelUser(emailid).subscribe((result) => {
            alert(result);
        });
    }

下面是我在 service-proxies.ts 文件中的函数代码。

registerHostLevelUser(value:any){
        let url_ = this.baseUrl + "/api/services/app/Account/RegisterHostLevelUser";
        url_ = url_.replace(/[?&]$/, "");

        return this.http.post(url_,value);
      }

下面是来自 AccountAppServices.cs 文件的代码

 public async Task<string> RegisterHostLevelUser(string value)
        {
            Debug.WriteLine(value); // here i am trying to write value but it is alwasy coming null.

            return "Done";
        }
4

1 回答 1

0

在 post 方法上,控制器希望将 JSON 对象作为参数传递,您正在尝试绑定单个字符串,但由于字符串不是 JSON 对象,因此无法正常工作。

尝试这个:

[Route("{args}")]
public async Task<string> myMethod([FromRoute] string args) {}

并更改这部分

registerHostLevelUser(value:any) {
    let url_ = this.baseUrl + "/api/services/app/Account/RegisterHostLevelUser/" + value;
    url_ = url_.replace(/[?&]$/, "");
    return this.http.post(url_,null);
}

您也可以使用单个字符串属性构建和对象,并将对象作为参数作为 JSON 主体传递给您的控制器,但上述方式更实用。

于 2020-12-08T14:17:51.007 回答