我有表user
,其中包含管理员添加的用户的其他自定义字段中的字段。
sql click this to diagram explain this
所以我想创建包含用户字段和自定义字段的Register
页面。
我要列出FiledType
和FieldName
。
在Controler:
public ActionResult Index()
{
ViewBag.CustomeFields = userCustomeFields.GetCustomeField();
return View();
}
UserField模型:
public class UserField
{
public string FieldName;
public string FieldTypeName;
}
所以我想在cshtml文件中创建动态字段。 我写了这段代码: 的更新
@foreach (var item in ViewBag.CustomeFields)
{
<div class="form-group">
@*@Html.LabelFor(i=>item.FieldTypeName , htmlAttributes: new { @class = "control-label col-md-2" })*@
<div class="col-md-10">
@if (item.FieldTypeName == "Textbox")
{
@Html.TextBox(item.FieldName)
}
</div>
</div>
@*@Html.Editor(item.FieldName, new { htmlAttributes = new { @class = "form-control" } })*@
}
但是我给错了!
HtmlHelper<User>' has no applicable method named 'TextBox' but appears to have an extension method by that name. Extension methods cannot be dynamically dispatched. Consider casting the dynamic arguments or calling the extension method without the extension method syntax.
我不知道我的方式是否正确?!
答案 0 :(得分:0)
这里再次回答你的第一个问题,万一你想把它标记为正确答案^^
你必须像今天一样投射它
@foreach(UserField item in ViewBag.CustomFields) {
或
@Html.TextBox(((UserField)item).FieldName)
或 @ Html.TextBox((字符串)item.FieldName)
对于属性,您可以使用带有new { ... }
@Html.TextBox("nameOfTheTexbox", "initialValue", new { @class ="myCssClass myOtherCssClass", disabled = "disabled" })