删除MVC 5 EditorTemplate附加ID

时间:2014-05-30 06:38:41

标签: asp.net-mvc asp.net-mvc-5 mvc-editor-templates

我正在使用此下拉列表的编辑器模板与相同属性名称

的ViewBag / ViewData
@model System.String
@*
    For Using this Editor Template
    - There should be a viewbag/viewdata (type SelectList) of same name as of calling Model's Property
*@
@{
    var modelMetadata = ViewData.ModelMetadata;
    // Get property name of the model
    var propertyname = modelMetadata.PropertyName;
}

@if (ViewData[propertyname] == null)
{
    @Html.DropDownList(propertyname , Enumerable.Empty<SelectListItem>(), "--Select--", new { @class = "form-control" })
}
else
{
    @Html.DropDownList(propertyname , null, "--Select--", new { @class = "form-control" })
}

现在用它作为 @Html.EditorFor(i=>i.Country,"CustomDropDown") 我还有一个ViewBag.Country作为国家的SelectList。

一切正常,但现在控制的命名变为

<select class="form-control" id="Country_Country" name="Country.Country">

如何从ID和名称中删除其他Country

其他信息:

我本来可以使用@Html.DropDownList("Country"),但它不允许我将css类添加到控件中。

1 个答案:

答案 0 :(得分:0)

我想我找到了解决方案。

我将DropDownList更改为DropDownListFor并进行了一些更改

@if (ViewData[propertyname] == null)
{
    @Html.DropDownListFor(m=>m, Enumerable.Empty<SelectListItem>(), "--Select--", new { @class = "form-control" })
}
else
{
    @Html.DropDownListFor(m => m, ViewData[propertyname] as SelectList, "--Select--", new { @class = "form-control" })
}

这种自动ViewData绑定有时令人困惑。 &GT; _&LT;