使用 Razor Select Tag Helper 强制单个 select
Force single select with Razor Select Tag Helper
我正在努力寻找以下问题的解决方案:
我的 Razor-Page 有一个包含两个 select
元素的表单,一次只有一个元素处于活动状态(不是 disabled
)。它们的值与我模型中的相同 属性 关联。
我必须让我的 属性 成为一个数组,这样我就可以访问两个 select 的值,尽管其中一个总是“null”。
这导致我的 select 在 HTML 中使用“多重”属性呈现。我怎样才能摆脱这个?我希望它是单一的 select.
我的selects:
<select asp-for=TätigkeitIds required onchange="this.form.submit()" disabled=@(Model.Erfassung.TätigkeitNavigation != null && Boolean.Equals(Model.Erfassung.TätigkeitNavigation.Abzurechnen, true))>
@{
<option selected=@(Model.Erfassung.TätigkeitNavigation == null) value="">Bitte eine nicht abzurechnende Tätigkeit wählen</option>
foreach(StammdatenTätigkeit Tätigkeit in await Model.GetTätigkeitenAsync(false))
{
<option selected="@(Model.Erfassung.TätigkeitNavigation != null && String.Equals(Tätigkeit.Id, Model.Erfassung.TätigkeitNavigation.Id))" value=@Tätigkeit.Id>@Tätigkeit.Name</option>
}
}
</select>
<select asp-for=TätigkeitIds required onchange="this.form.submit()" disabled=@(Model.Erfassung.TätigkeitNavigation != null && Boolean.Equals(Model.Erfassung.TätigkeitNavigation.Abzurechnen, false))>
@{
<option selected=@(Model.Erfassung.TätigkeitNavigation == null || Boolean.Equals(Model.Erfassung.TätigkeitNavigation.Abzurechnen, false)) value="">nicht abrech. Std.</option>
foreach(StammdatenTätigkeit Tätigkeit in await Model.GetTätigkeitenAsync(true))
{
<option selected="@(Model.Erfassung.TätigkeitNavigation != null && String.Equals(Tätigkeit.Id, Model.Erfassung.TätigkeitNavigation.Id))" value=@Tätigkeit.Id>@Tätigkeit.Name</option>
}
}
</select>
属性:
[BindProperty(SupportsGet = false)]
public String[] TätigkeitIds { get; set; }
渲染的HTML:
<select required onchange="this.form.submit()" id="T_tigkeitIds" multiple="multiple" name="TätigkeitIds">
<option value="" selected="selected">Bitte eine nicht abzurechnende Tätigkeit wählen</option>
<option selected="selected" value="d58559ac-6601-4871-aff2-aa72982fd5cc">Schulung</option>
</select>
<select required onchange="this.form.submit()" disabled="disabled" id="T_tigkeitIds" multiple="multiple" name="TätigkeitIds">
<option selected="selected" value="">nicht abrech. Std.</option>
<option value="c2b8fd29-c85b-49c1-a2db-35b9fa9d11a0">PJ-Bearbeitung</option>
</select>
本质上,我正在寻找一种方法来强制 HTML-Select 在没有 multiple
属性 或 的情况下出现使我的 属性 再次成为普通字符串,并告诉框架用不是 null
.
的任何输入填充它
基于 ,我可以通过简单地停用我的两个 select
-标签的标签助手来解决我的问题,如下所示:
<!select name="TätigkeitIds" required onchange="this.form.submit()" @(Model.Erfassung.TätigkeitNavigation != null && Boolean.Equals(Model.Erfassung.TätigkeitNavigation.Abzurechnen, false) ? "disabled" : "")>
@{
<option selected=@(Model.Erfassung.TätigkeitNavigation == null || Boolean.Equals(Model.Erfassung.TätigkeitNavigation.Abzurechnen, false)) value="">nicht abrech. Std.</option>
foreach(StammdatenTätigkeit Tätigkeit in await Model.GetTätigkeitenAsync(true))
{
<option selected="@(Model.Erfassung.TätigkeitNavigation != null && String.Equals(Tätigkeit.Id, Model.Erfassung.TätigkeitNavigation.Id))" value=@Tätigkeit.Id>@Tätigkeit.Name</option>
}
}
</!select>
我正在努力寻找以下问题的解决方案:
我的 Razor-Page 有一个包含两个 select
元素的表单,一次只有一个元素处于活动状态(不是 disabled
)。它们的值与我模型中的相同 属性 关联。
我必须让我的 属性 成为一个数组,这样我就可以访问两个 select 的值,尽管其中一个总是“null”。
这导致我的 select 在 HTML 中使用“多重”属性呈现。我怎样才能摆脱这个?我希望它是单一的 select.
我的selects:
<select asp-for=TätigkeitIds required onchange="this.form.submit()" disabled=@(Model.Erfassung.TätigkeitNavigation != null && Boolean.Equals(Model.Erfassung.TätigkeitNavigation.Abzurechnen, true))>
@{
<option selected=@(Model.Erfassung.TätigkeitNavigation == null) value="">Bitte eine nicht abzurechnende Tätigkeit wählen</option>
foreach(StammdatenTätigkeit Tätigkeit in await Model.GetTätigkeitenAsync(false))
{
<option selected="@(Model.Erfassung.TätigkeitNavigation != null && String.Equals(Tätigkeit.Id, Model.Erfassung.TätigkeitNavigation.Id))" value=@Tätigkeit.Id>@Tätigkeit.Name</option>
}
}
</select>
<select asp-for=TätigkeitIds required onchange="this.form.submit()" disabled=@(Model.Erfassung.TätigkeitNavigation != null && Boolean.Equals(Model.Erfassung.TätigkeitNavigation.Abzurechnen, false))>
@{
<option selected=@(Model.Erfassung.TätigkeitNavigation == null || Boolean.Equals(Model.Erfassung.TätigkeitNavigation.Abzurechnen, false)) value="">nicht abrech. Std.</option>
foreach(StammdatenTätigkeit Tätigkeit in await Model.GetTätigkeitenAsync(true))
{
<option selected="@(Model.Erfassung.TätigkeitNavigation != null && String.Equals(Tätigkeit.Id, Model.Erfassung.TätigkeitNavigation.Id))" value=@Tätigkeit.Id>@Tätigkeit.Name</option>
}
}
</select>
属性:
[BindProperty(SupportsGet = false)]
public String[] TätigkeitIds { get; set; }
渲染的HTML:
<select required onchange="this.form.submit()" id="T_tigkeitIds" multiple="multiple" name="TätigkeitIds">
<option value="" selected="selected">Bitte eine nicht abzurechnende Tätigkeit wählen</option>
<option selected="selected" value="d58559ac-6601-4871-aff2-aa72982fd5cc">Schulung</option>
</select>
<select required onchange="this.form.submit()" disabled="disabled" id="T_tigkeitIds" multiple="multiple" name="TätigkeitIds">
<option selected="selected" value="">nicht abrech. Std.</option>
<option value="c2b8fd29-c85b-49c1-a2db-35b9fa9d11a0">PJ-Bearbeitung</option>
</select>
本质上,我正在寻找一种方法来强制 HTML-Select 在没有 multiple
属性 或 的情况下出现使我的 属性 再次成为普通字符串,并告诉框架用不是 null
.
基于 select
-标签的标签助手来解决我的问题,如下所示:
<!select name="TätigkeitIds" required onchange="this.form.submit()" @(Model.Erfassung.TätigkeitNavigation != null && Boolean.Equals(Model.Erfassung.TätigkeitNavigation.Abzurechnen, false) ? "disabled" : "")>
@{
<option selected=@(Model.Erfassung.TätigkeitNavigation == null || Boolean.Equals(Model.Erfassung.TätigkeitNavigation.Abzurechnen, false)) value="">nicht abrech. Std.</option>
foreach(StammdatenTätigkeit Tätigkeit in await Model.GetTätigkeitenAsync(true))
{
<option selected="@(Model.Erfassung.TätigkeitNavigation != null && String.Equals(Tätigkeit.Id, Model.Erfassung.TätigkeitNavigation.Id))" value=@Tätigkeit.Id>@Tätigkeit.Name</option>
}
}
</!select>