17

我有:

<input onkeypress="@Foo" />

和:

@functions
{
    void Foo(UIKeyboardEventArgs e)
    {

    }
}

如何传递或以其他方式检索处理程序方法中的输入值?

4

8 回答 8

23

不幸的是,您需要oninput事件来更新绑定变量。

@value
<input type="text" @bind="@value" @oninput="@(ui => { value = (string) ui.Value);})" />

@functions {
    string value;
}
于 2019-04-27T16:03:34.493 回答
10

对于搜索此内容的人,您可以使用 .net core 3.1 实现此功能,以处理 Blazor 上的按键事件。

<input value="@stringValue" @oninput="(EventArgs) => {SetValue(EventArgs.Value.ToString()); DoSomethingElse();}"/>

@code {
    string stringValue = "";

    private void SetValue(string Value)
    {
        stringValue = int.Parse(Value);
    }
}
于 2020-04-19T09:29:00.817 回答
4

“KeyboardEvent 事件仅指示用户在低级别与键盘上的键进行的交互”。为了访问文本输入,您应该使用 input 事件或 change 事件。在 Blazor 中,现在输入事件由更改事件包装;也就是说,您的代码只有在输入元素失去焦点后才能访问新值。但是,您应该做的是定义一个绑定到输入元素的属性,并且可以在您的代码中访问以进行检索:

protected string MyInput {get; set;}

<input type="text" bind="@MyInput" /> 

上面的绑定在内部基于更改事件,而不是输入事件(同样,现在在 Blazor 中是不可能的)

于 2018-10-04T17:54:18.350 回答
3

您可以改用“oninput”事件。每次输入元素的值发生变化时都会调用此事件。它采用一个参数,即 UIChangeEventArgs,其中包含具有 Input-elements 当前值的 Value 属性。例如

<input type="text" oninput="@((ui) => { Foo((string)ui.Value);})"/>

@function {
    void Foo(string s)
    {
        //do stuff
    }
}
于 2019-04-02T08:28:05.583 回答
1

如果您只想让输入实时更新绑定值,您可以使用:

<input @bind-value="foo" @bind-value:event="oninput" />

如果您特别想将您的事件与键盘事件参数相关联,那么这样的事情将起作用:

<input @bind-value="foo" @onkeypress="HandleKeyPress" />
@bar
@code {
    string foo;
    string bar;
    void HandleKeyPress(KeyboardEventArgs args)
    {
        bar = $"You just pressed {args.Key}!";
    }
}
于 2020-04-21T15:29:33.977 回答
1

搜索了同样的东西。

Blazor WASM (.NET 5) 的正确答案是:

@code {
   public string OurField { get; set; }
}

<Element @bind-ElementFieldName="OurField" />

示例TextEdit来自Blazorise

@code {
   private string Login { get; set; }
}

<TextEdit @bind-Text="Login"></TextEdit>
于 2021-03-10T04:39:20.670 回答
0

使用oninput事件。

<input type="text" @oninput="UpdateText"/>

The text is <label>@Text</label>

@code {
    public string Text { get; set; }
    private void UpdateText(ChangeEventArgs e)
    {
        Text = e.Value.ToString();
    }
}
于 2021-06-05T23:07:11.243 回答
-5

为简单起见,您可以使用以下代码:

<input bind-value-oninput="@stringValue"/>

@functions {
string stringValue;
}
于 2019-06-11T11:49:24.120 回答