C# 如何获取Html.DropdownFor()以选择当前元素?
我一定错过了一些简单的东西。这个代码正在运行,我似乎不明白为什么它停止了 首先,我在控制器中生成一个selectlist,如下所示:C# 如何获取Html.DropdownFor()以选择当前元素?,c#,asp.net,asp.net-mvc,html-helper,C#,Asp.net,Asp.net Mvc,Html Helper,我一定错过了一些简单的东西。这个代码正在运行,我似乎不明白为什么它停止了 首先,我在控制器中生成一个selectlist,如下所示: // Select List ViewData["FieldTypesList"] = new SelectList( genesisRepository.FieldTypes, "ftID", "ftName" ); <%@ Control Language="C#"
// Select List
ViewData["FieldTypesList"] = new SelectList(
genesisRepository.FieldTypes, "ftID", "ftName"
);
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Genesis.Domain.Entities.Stream2FieldTypes>" %>
<%@ Import Namespace="Genesis.Domain.Entities" %>
<%: Html.DropDownListFor(
model => model.FieldTypeID,
(SelectList)ViewData["FieldTypesList"]
)%>
<%:Model.FieldTypeID.ToString() %>
使用此选择列表的视图如下所示:
// Select List
ViewData["FieldTypesList"] = new SelectList(
genesisRepository.FieldTypes, "ftID", "ftName"
);
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Genesis.Domain.Entities.Stream2FieldTypes>" %>
<%@ Import Namespace="Genesis.Domain.Entities" %>
<%: Html.DropDownListFor(
model => model.FieldTypeID,
(SelectList)ViewData["FieldTypesList"]
)%>
<%:Model.FieldTypeID.ToString() %>
model.FieldTypeID,
(选择列表)视图数据[“字段类型列表”]
)%>
然而。。。生成的HTML如下所示:
<select id="Stream2FieldTypes_0_" name="Stream2FieldTypes[0]"><option value="1">Text Area</option>
<option value="2">Text Box</option>
<option value="3">Rich Text</option>
<option value="4">Image</option>
<option value="5">DateTime</option>
<option value="6">Decimal</option>
<option value="7">Integer</option>
</select>
3 <!--FYI: current value-->
文本区
文本框
富文本
形象
日期时间
十进制的
整数
3.
我完全不明白为什么视图不呈现选择3(富文本)的html
你们看到我的思维过程有什么问题吗?你们可以在控制器中用超负荷的
您可以在控制器中以
我认为您忘记将所选值传递给构造函数
ViewData["FieldTypesList"] = new SelectList(
genesisRepository.FieldTypes, "ftID", "ftName", myModel.FileTypeID)
);
我认为您忘记将所选值传递给构造函数
ViewData["FieldTypesList"] = new SelectList(
genesisRepository.FieldTypes, "ftID", "ftName", myModel.FileTypeID)
);
感谢@hunter和@John_Hartstock将我指向selectlist实例,而不是关注DropDownListFor()方法 最后,我通过在视图中构造selectlist而不是controlelr来解决这个bug。已将控制器编辑为:
ViewData["FieldTypesList"] = genesisRepository.FieldTypes;
// Returns IEnumerable of FieldTypes
将视图更改为:
<%: Html.DropDownListFor(
model => model.FieldTypeID,
new SelectList((IEnumerable<FieldTypes>)ViewData["FieldTypesList"],
"ftID",
"ftName",
Model.FieldTypeID ))
%>
model.FieldTypeID,
新建SelectList((IEnumerable)ViewData[“FieldTypesList”],
“快速道”,
“ftName”,
Model.FieldTypeID)
%>
这很好用 感谢@hunter和@John_Hartstock为我指明了selectlist实例,而不是关注DropDownListFor()方法 最后,我通过在视图中构造selectlist而不是controlelr来解决这个bug。已将控制器编辑为:
ViewData["FieldTypesList"] = genesisRepository.FieldTypes;
// Returns IEnumerable of FieldTypes
将视图更改为:
<%: Html.DropDownListFor(
model => model.FieldTypeID,
new SelectList((IEnumerable<FieldTypes>)ViewData["FieldTypesList"],
"ftID",
"ftName",
Model.FieldTypeID ))
%>
model.FieldTypeID,
新建SelectList((IEnumerable)ViewData[“FieldTypesList”],
“快速道”,
“ftName”,
Model.FieldTypeID)
%>
这很好用 我想我不能使用这种语法。上面显示的视图实际上是编辑器模板的一部分,它是使用EditorFor()显示的。最终,页面上可能会有许多这样的“FieldType”选择框。这取决于调用哪个记录。我无法在控制器中硬编码选择列表的值,因为该选择列表多次出现在页面上。我认为我无法使用此语法。上面显示的视图实际上是编辑器模板的一部分,它是使用EditorFor()显示的。最终,页面上可能会有许多这样的“FieldType”选择框。这取决于调用哪个记录。我无法在控制器中硬编码选择列表的值,因为该选择列表多次出现在页面上。当我构建选择列表时,我还不知道选择的值是什么。我向视图发送了一个viewmodel,同一个选择列表用于viewmodel中的多个元素。此外,我认为视图中的行:
model=>model.FieldTypeID
应该指定选择值。尝试将FieldTypeID强制转换为int.(int)model.FieldTypeID
我猜这是一个枚举?或者尝试model.FieldTypeID.ToString()
当我构建selectlist时,我还不知道所选的值是什么。我向视图发送了一个viewmodel,同一个选择列表用于viewmodel中的多个元素。此外,我认为视图中的行:model=>model.FieldTypeID
应该指定选择值。尝试将FieldTypeID强制转换为int.(int)model.FieldTypeID
我猜这是一个枚举?或者试试model.FieldTypeID.ToString()