我遇到了一个基本的 blazor 项目的问题。我有一个父组件和一个带有事件回调的子组件,我希望它传回一种类型的 T。我遇到的问题是我在将 MethodGroup 转换为 EventCallback 时出错。如果我将其转换为使用 Action 则它可以工作,但我不能异步执行,这并不理想。任何想法我做错了什么?
家长
<Child
DeleteCallback="@OnDelete"></Child>
public async Task OnDelete(T item)
{
}
Run Code Online (Sandbox Code Playgroud)
孩子
@typeparam T
[Parameter]
public EventCallback<T> DeleteCallback { get; set; }
<a @onclick="() => DeleteCallback.InvokeAsync(item)"></a>
Run Code Online (Sandbox Code Playgroud)
我在这里添加了一个 repo 来解释这个问题。查看 Blazor 的问题,这应该已在 2019 年修复。https://github.com/scott-david-walker/EventCallbackError
是否可以向视图中的字段添加特定的错误消息?目前,我已经在模型上进行了验证,以检查字段是否为空(ValidationMessageFor <>),并且我正在使用验证摘要来查找特定的错误。我想知道的是,为摘要创建的特定错误消息是否可以代替ValidationMessageFor <>?
模型:
[Required]
public string SchoolCode { get; set; }
Run Code Online (Sandbox Code Playgroud)
视图:
@Html.ValidationSummary("", new { @class = "text-danger" })
@Html.EditorFor(m => m.SchoolCode, new { htmlAttributes = new { @class = "form-control", @placeholder = "School Code" } })
@Html.ValidationMessageFor(model => model.SchoolCode, "", new { @class = "text-danger" })
Run Code Online (Sandbox Code Playgroud)
控制器:
var schoolExists = RepositoryHelper.GetSchoolByCode(model.SchoolCode);
if (schoolExists == null)
{
ModelState.AddModelError(string.Empty, @"No school exists with this code");
return View(model);
}
if (ModelState.IsValid)
{
//do other stuff
}
Run Code Online (Sandbox Code Playgroud)
因此,如果模型状态无效,则返回模型错误,但是如果输入了错误的代码,则会在验证摘要中添加“此代码不存在任何学校”。我可以用学校代码摘要错误替换学校代码模型错误吗?
使用默认的 mvc 代码在注册时确认电子邮件地址,但是当电子邮件被发送时,它没有显示 html。
模板MVC代码:
string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" +
callbackUrl + "\">here</a>");
Run Code Online (Sandbox Code Playgroud)
发送电子邮件异步:
public Task SendAsync(IdentityMessage message)
{
// Plug in your email service here to send an email.
SmtpClient client = new SmtpClient();
return client.SendMailAsync("email here",
message.Destination,
message.Subject,
message.Body);
return Task.FromResult(0);
}
Run Code Online (Sandbox Code Playgroud)
在查看有关 SO 的其他一些问题时,我稍微更改了发送代码,以便可以将正文设置为允许使用 html,但我仍然遇到相同的问题
public Task …Run Code Online (Sandbox Code Playgroud)