我正在尝试以编程方式使用 Blazor 生成表单,但遇到了一个问题,我需要将 InputText 值绑定到集合的成员,例如:
@foreach (var prop in formProperties)
{
<InputText id=@prop.Name @bind-Value="form.Responses[prop.Name]" />
}
Run Code Online (Sandbox Code Playgroud)
但是,我得到以下异常:
System.ArgumentException: The provided expression contains a InstanceMethodCallExpression1 which is not supported. FieldIdentifier only supports simple member accessors (fields, properties) of an object.
Run Code Online (Sandbox Code Playgroud)
是否可以将输入绑定到某种类型的集合?
我DownloadController.cs给Controllers/DownloadController下面的方法:
public async Task<ActionResult> DownloadFile(string key)
{
return File(...);
}
Run Code Online (Sandbox Code Playgroud)
此外,在我的Startup.cs配置中,我配置了以下端点:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default".
pattern: "{controller}/{action}");
endpoints.MapControllers();
endpoints.MapBlazorHub();
endpoints.MapFallbackToPage("/_Host");
});
Run Code Online (Sandbox Code Playgroud)
那么如何在 Blazor 视图中导航到控制器操作?我正在寻找类似的东西:
@Html.ActionLink(...);
Run Code Online (Sandbox Code Playgroud) 我有一个需要同步调用的异步任务(是的,不幸的是,这是不可避免的)。似乎有两种方法可以实现这一点——每种方法似乎都有效。所以我不确定哪种方法是最好的,或者是否有更好的方法。
例如:
var meetings = Task.Run(() => GetTodaysMeetingsAsync()).GetAwaiter().GetResult();
var meetings = GetTodaysMeetingsAsync().GetAwaiter().GetResult();
Run Code Online (Sandbox Code Playgroud)
如果有人能解释为什么一种方法比另一种方法更好,那将不胜感激。谢谢!
c# ×3
blazor ×2
.net ×1
.net-core ×1
asp.net ×1
asp.net-mvc ×1
asynchronous ×1
controller ×1
data-binding ×1
razor ×1
task ×1