【发布时间】:2022-09-02 13:48:10
【问题描述】:
我有一个应用程序,我试图在其中创建以下类型的记录:
public class ObfuscatingTradeDatum
{
public int Id { get; set; }
[Required]
public string ProviderName { get; set; }
[Required]
public string ClientNameAsAppearsOnTradeData { get; set; }
[Required]
public string ClientCode { get; set; }
[Required]
public Guid ProviderDynamicsId { get; set; }
[Required]
public Guid TraderDynamicsId { get; set; }
}
我的 blazor 页面形式如下:
<EditForm Model=\"@ObfuscatingTradeData\" OnValidSubmit=\"@HandleValidSubmit\">
<DataAnnotationsValidator />
<div class=\"form-group\">
<label>Provider Name:</label>
<div>
<InputText @bind-Value=\"@ObfuscatingTradeData.ProviderName\" />
<ValidationMessage For=\"@(() => ObfuscatingTradeData.ProviderName)\" />
</div>
</div>
<div class=\"form-group \">
<div>
<label>Client Name:</label>
<div>
<InputText @bind-Value=\"@ObfuscatingTradeData.ClientNameAsAppearsOnTradeData\" />
<ValidationMessage For=\"@(() => ObfuscatingTradeData.ClientNameAsAppearsOnTradeData)\" />
</div>
</div>
</div>
<div class=\"form-group \">
<div>
<label>Client Code:</label>
<div>
<InputText @bind-Value=\"@ObfuscatingTradeData.ClientCode\" />
<ValidationMessage For=\"@(() => ObfuscatingTradeData.ClientCode)\" />
</div>
</div>
</div>
<div class=\"form-group \">
<div>
<label>Provider Dynamics ID:</label>
<div>
<input type=\"text\" @bind=\"@ObfuscatingTradeData.ProviderDynamicsId\" />
<ValidationMessage For=\"@(() => ObfuscatingTradeData.ProviderDynamicsId)\" />
</div>
</div>
</div>
<div class=\"form-group \">
<div>
<label>Trader Dynamics ID:</label>
<div>
<input type=\"text\" @bind=\"@ObfuscatingTradeData.TraderDynamicsId\" />
<ValidationMessage For=\"@(() => ObfuscatingTradeData.TraderDynamicsId)\" />
</div>
</div>
</div>
<button type=\"submit\" class=\"btn btn-success\">@ButtonText</button>
@code {
public ObfuscatingTradeDatum ObfuscatingTradeData = new ObfuscatingTradeDatum();
[Parameter] public string ButtonText { get; set; } = \"Save\";
private void HandleValidSubmit() => Service.InsertObfuscatingTradeDatum(ObfuscatingTradeData);
}
我的问题发生在这一行:
<input @bind=\"@ObfuscatingTradeData.TraderDynamicsId\" />
我想要的是使用一个接受 Guids 的输入组件,这样我就可以获得免费的内置验证。但是,以下代码会引发错误 \"The type \'System.Guid\' is not a supported numeric type.\":
<InputNumber @bind-Value=\"@ObfuscatingTradeData.TraderDynamicsId\" />
这个错误是有道理的,但是从我所做的搜索来看,我不确定如何将 guid 作为输入传递。任何帮助将不胜感激。
非常感谢,
-
使用
inputText! -
这会产生“无法从 System.Guid 转换为字符串”的编译错误
-
你试过解决方案了吗?
-
不幸的是,以下解决方案会导致实体框架出现更多问题。这种方法对我来说有点“Hacky”,感觉应该有一个更受支持的解决方案来解决我的问题
-
不可能,我测试了!,它工作正常,我认为你还有另一个问题,请参阅
BlazorFiddle中的解决方案
标签: c# html web-component blazor-server-side