使用HtmlHelper在控制器中动态生成html控件(不使用Razor)

时间:2015-11-26 01:01:11

标签: c# asp.net-mvc

我正在尝试基于XML配置文件生成表单控件。在该文件中,我有一些属性列表,例如controlid,class,maxlength,required,readonly..etc。我没有使用Razor在视图中生成控件。我更喜欢这种方法。

我使用以下代码生成控件。

IDictionary customHTMLAttributes = new Dictionary<string, object>();     
customHTMLAttributes.Add("class", "form-control");
                    customHTMLAttributes.Add("maxlength", field.MaxLength);
                    customHTMLAttributes.Add("minlength", field.MinLength);
                    htmlString  = helper.TextBox(field.ControlName, "", customHTMLAttributes);

渲染的HTML控件有一些与之相关的无效数据:

<input Comparer=\"System.Collections.Generic.GenericEqualityComparer`1[System.String]\" Count=\"3\" Keys=\"System.Collections.Generic.Dictionary`2+KeyCollection[System.String,System.Object]\" Values=\"System.Collections.Generic.Dictionary`2+ValueCollection[System.String,System.Object]\" id=\"txtManufacturer\" name=\"txtManufacturer\" type=\"text\" value=\"\" />

如果我使用new {attributename = value, attribute2 = value}而不是使用Dictionary来创建属性列表,它将正确呈现控件。

编辑: 我的问题是如何使用Dictionary创建一个动态的属性列表,然后将其传递给HtmlHelper.TextBox("text1","",customAttributes);

0 个答案:

没有答案