Asp.net mvc 我怎样才能通过<;选择列表项>;下拉列表中的文本是否指向另一个视图?

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

我不知道如何使用DropDownList将文本从一个视图传递到另一个视图

我在视图中使用以下内容:

@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)中,我有:

注意事项:

  • 控制器有一个序列化部分。我不知道它是否相关(让我知道是否相关,我将在上面的代码中进行编辑)
  • 使用MvcMailer,因此涉及到另外两个文件,但我也不知道它是否相关(这是上面的
    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,“值”、“文本”)
    by
    this.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>
                }