如果模型的属性是对象,如何显示正确的输入类型?

时间:2016-12-08 07:06:38

标签: c# razor asp.net-core

我的视图模型具有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(没有任何人工检查)?

2 个答案:

答案 0 :(得分:0)

您可以使用如下的GetType()。

object value = true;
if(value.GetType()==typeof(string))
{
     //Textbox
}
else if(value.GetType()==typeof(bool))
{
     //checkbox
}

答案 1 :(得分:0)

以下是CLR和自定义(您自己的)对象类型的完整示例。只需复制并粘贴到您的Razor视图中,然后填写其余类型:

{{1}}