Asp.net mvc 我怎样才能通过<;选择列表项>;下拉列表中的文本是否指向另一个视图?
我不知道如何使用DropDownList将文本从一个视图传递到另一个视图 我在视图中使用以下内容:Asp.net mvc 我怎样才能通过<;选择列表项>;下拉列表中的文本是否指向另一个视图?,asp.net-mvc,drop-down-menu,Asp.net Mvc,Drop Down Menu,我不知道如何使用DropDownList将文本从一个视图传递到另一个视图 我在视图中使用以下内容: @using (Html.BeginFormAntiForgeryPost()) { @Html.Hidden("myData", new MvcSerializer().Serialize(Model, SerializationMode.Signed)) ... @Html.DropDownListFor(m => m.MyProperty, new Selec
@using (Html.BeginFormAntiForgeryPost())
{
@Html.Hidden("myData", new MvcSerializer().Serialize(Model, SerializationMode.Signed))
...
@Html.DropDownListFor(m => m.MyProperty, new SelectList(Model.MyPropertyList, "Value", "Text"))
...
}
在我的ViewModel(MyData)中,我有:
注意事项:
MyMailer.AskUs(myData.Send();
部分)@Model.MyPropertyList
,则我的视图显示
System.Collections.Generic.List1[System.Web.Mvc.SelectListItem]
如果我使用@Model.MyProperty
我将获得值,例如
1
我只需要弄清楚如何输出包含的实际“文本”,例如
new SelectListItem { Value = "1", Text="**Some text.**" }
任何关于如何实现这一点的示例都将不胜感激。当您提交包含下拉列表的表单时,只有选定的值才会发送到服务器。如果要获取相应的文本,可以使用此选定值并搜索相应的列表 此外,您无需手动将
(请选择)
项目添加到您的收藏中。这可以直接在视图中完成:
@Html.DropDownListFor(
m => m.MyProperty,
Model.MyPropertyList,
"(Please select)"
)
仅显示SelectListItem中与@Model.MyProperty值对应的文本,您可以使用
@{
var item = Model.PropertyList.FirstOrDefault(a => a.Value == Model.MyProperty.ToString());
var itemText = item.Text;
}
@itemText
//控制器
TempData[“TaxType”]=act.GetTaxType();
//看法
@foreach(列表中的var项TempData[“TaxType”])
{
@项目.案文
}
我们可以查看您的控制器代码吗?@iaimtomisbehave已更新以放置控制器代码-如果您还需要查看其他内容,请告诉我。非常感谢现在查看我的DDL教程并查看链接,谢谢!它们相对较新,可能是搜索时没有出现的原因。在查看并尝试实现上述链接中的代码后,Rick假设我得出结论,他的解决方案在我的上下文中不起作用。感谢您提供有关在视图中直接插入文本的提示。我仍然在为输出值的语法而挣扎。如果我在确认视图中执行@Model.MyPropertyList
,我的视图将显示System.Collections.Generic.List
1[System.Web.Mvc.SelectListItem]。如果我使用
@Model.MyProperty`我正在获取值,例如,1
@REMESQ,请替换视图中的以下行:this.MyPropertyList=new SelectList(MyPropertyList,“值”、“文本”)
bythis.MyPropertyList=MyPropertyList代码>或直接初始化它。您不需要使用SelectList
,因为您已经有了IEnumerable
。这是多余的。对不起,我意识到我发布了最近更改的代码,所以是的,我有'this.MyPropertyList=MyPropertyList;'现在。编辑上面。我一直在努力让一些工作使用你的建议,获取相应的文本。我可以强迫你提供一个例子吗?@REMESQ,当然,在你的POST操作中,你只需查询你的存储库(可能会查询你的数据库或其他东西)就可以得到给定所选值的相应文本,就像这样:string selectedText=repository.GetText(selectedValue)代码>。请在回答中添加更多详细信息。为什么这样做有效?你解决的问题是什么?这使得OP和未来的每个人都更容易理解他们的问题。
@Html.DropDownListFor(
m => m.MyProperty,
Model.MyPropertyList,
"(Please select)"
)
@{
var item = Model.PropertyList.FirstOrDefault(a => a.Value == Model.MyProperty.ToString());
var itemText = item.Text;
}
@itemText
//controller
TempData["TaxType"] = act.GetTaxType();
//view
@foreach (var item in (List<SelectListItem>) TempData["TaxType"])
{
<option value="@item.Value" >@item.Text</option>
}