我想简化以下内容
if statements
使用 if(sauhp.length < 1){
//sauhp is empty and not a bot - proceed
const token = await this.$recaptcha(formType);
//Send the token to validate
let verifyReCaptcha = await axios.get('/api/recaptcha/api/siteverify?secret='+secret+'&response='+token);
let reCaptchaResponse = verifyReCaptcha.data;
//Validate the action
if(reCaptchaResponse.action === formType){
//Process the form
if(reCaptchaResponse.score > 1){
console.log('yes great go ahead')
}else{
window.$nuxt.error({
statusCode: 500,
message: "We've detected a problem in the form submission. Call us, we're here to help."
})
}
}
}else{
window.$nuxt.error({
statusCode: 500,
message: "We've detected a problem in the form submission. Call us, we're here to help."
})
}
},
或@if (Template != null)
{
@Template
}
else
{
<span>No contents!</span>
}
有可能吗?
我在下面的尝试
??
?.
@Template?.BeginInvoke()
产生红色的波浪线。
我认为我需要提交要简化的真实情况。
@{Template==null? @Template : <span> No data to display! </span>}
我不想使用私有字段将输入值缓冲到@(Template??<span> No data to display! </span>)
属性中,在将它们(字段)呈现为HTML之前对其进行预处理。换句话说,@typeparam T
@if (Items == null)
{
if (NullTemplate != null)
{
@NullTemplate
}
else
{
<span style="color: red">Null...</span>
}
}
else if (Items.Count == 0)
{
if (EmptyTemplate != null)
{
@EmptyTemplate
}
else
{
<span style="color: red">Empty ...</span>
}
}
else
{
@HeaderTemplate
foreach (T item in Items)
{
@ItemTemplate(item)
}
}
@code{
[Parameter] public RenderFragment NullTemplate { get; set; }
[Parameter] public RenderFragment EmptyTemplate { get; set; }
[Parameter] public RenderFragment HeaderTemplate { get; set; }
[Parameter] public RenderFragment<T> ItemTemplate { get; set; }
[Parameter] public List<T> Items { get; set; }
}
指令中不允许有其他代码。
答案 0 :(得分:2)
当您将<span style="color: red">Null...</span>
部分存储为RenderFragments时,它可以工作(我认为)。可以接受吗?
这会将逻辑转移到构造函数或SetParameters方法。
[Parameter] public RenderFragment NullTemplate { get; set; } = builder => StubTemplate(builder, "Null");
[Parameter] public RenderFragment EmptyTemplate { get; set; } = builder => StubTemplate(builder, "Empty");
private static void StubTemplate(RenderTreeBuilder __builder, string what)
{
<span style="color: red">@what</span>
}
请注意,__builder
名称是必需的。
然后,您不再需要主要组件中的任何条件代码:
@if (Items == null)
{
@NullTemplate
}
或者,您可以省略属性初始化并执行:
@(EmptyTemplate ?? (builder => StubTemplate(builder, "Empty")))
但是我会为所有()
感到头晕。