我的视图模型具有List<KeyValuePair<string, object>> mylist
属性,当&#34; object&#34; (值)可以是字符串或布尔值(实际上它可以表示很多其他类型,甚至不是CLR)。
好吧,我想把它正确地渲染成输入标签,即如果Value是bool,那么输入=&#34;复选框&#34; else是string然后输入=&#34; text&#34;等等
有我的Razor代码:
do
{
<input asp-for="mylist[i].Value" />
i++;
} while (i < (int)count);
但是,此类代码会为bool或字符串类型返回<input type="text" />
输入标记。是否存在任何方法来干净地显示适当的标签max(没有任何人工检查)?
答案 0 :(得分:0)
您可以使用如下的GetType()。
object value = true;
if(value.GetType()==typeof(string))
{
//Textbox
}
else if(value.GetType()==typeof(bool))
{
//checkbox
}
答案 1 :(得分:0)
以下是CLR和自定义(您自己的)对象类型的完整示例。只需复制并粘贴到您的Razor视图中,然后填写其余类型:
{{1}}