C# Blazor:可重用的OnSelect更改事件

C# Blazor:可重用的OnSelect更改事件,c#,onchange,blazor-server-side,selectionchanged,C#,Onchange,Blazor Server Side,Selectionchanged,是否有更可重用的版本: void OnSelectFoundWithCus(ChangeEventArgs e) { selectedString = e.Value.ToString(); DisplayToggle("FoundWithCus"); } async Task DisplayToggle(string DivToToggle) { if(selectedString == "Yes") //i

是否有更可重用的版本:

 void OnSelectFoundWithCus(ChangeEventArgs e)
 {
     selectedString = e.Value.ToString();
     DisplayToggle("FoundWithCus");
 }
 async Task DisplayToggle(string DivToToggle)
 {
    if(selectedString == "Yes")
    //if (!isChecked)
    {
        await JSRuntime.InvokeAsync<object>("showElement", new { id = DivToToggle });
        isChecked = !isChecked;
    }
    else
    {
        await JSRuntime.InvokeAsync<object>("hideElement", new { id = DivToToggle });
        isChecked = !isChecked;
    }
 }
尝试使用如下更改类的方法:

 void OnSelect(ChangeEventArgs e, string DivToToggle)
 {
     selectedString = e.Value.ToString();
     DisplayToggle(DivToToggle);
 }
<div class="@className"></div>

当引用它的任何控件选择一个选项时,将显示/隐藏使用class=“@className”的每个控件。

看起来我可能问错了问题。基本上,我需要向带有ChangeEventArgs参数的函数传递额外的参数。到目前为止,我发现的第一个功能版本是这个设置(直到我可以使用非JavaScript版本):

对于选择控件:

 <select @onchange='(e  => DisplayToggle(e, "DMGReported"))' class="form-control">
     <option value=" "> </option>
     <option value="Yes">Yes</option>
     <option value="No">No</option>
 </select>

字符串divtologle
来自哪里?不管怎样,您可能应该完全重写它,不调用任何javascript。只需在div中包含某种类型的
class=“@display\u或\u not”
,并确保在相应的单击处理程序中更改相应的
display\u或\u not
变量。最初的想法是实际控件本身。类似于:@onchange='(()=>OnSelect(“FoundWithCus”))。是否有该类的示例=“@display\u or\u not”我可以引用?它只是。
 <select @onchange='(e  => DisplayToggle(e, "DMGReported"))' class="form-control">
     <option value=" "> </option>
     <option value="Yes">Yes</option>
     <option value="No">No</option>
 </select>
async Task DisplayToggle(ChangeEventArgs e, string DivToToggle)
{
    selectedString = e.Value.ToString();
    if (selectedString == "Yes")        
    {
        await JSRuntime.InvokeAsync<object>("showElement", new { id = DivToToggle });
        selectedString = "";
    }
    else
    {
        await JSRuntime.InvokeAsync<object>("hideElement", new { id = DivToToggle });
        selectedString = "";
    }
}
function hideElement(styleOp) {
    document.getElementById(styleOp.id).style.display = "none";
}
function showElement(styleOp) {
    document.getElementById(styleOp.id).style = null;
    document.getElementById(styleOp.id).style.visibility = "visible";    
}