ASP.NET MVC如何显示DropDownList

时间:2017-02-02 20:31:57

标签: asp.net-mvc asp.net-mvc-4 asp.net-mvc-3

我正在尝试在没有数据库的情况下将项添加到DropDownList中。  但输出只显示"测试..."

我的模特课。

public class DropDownListData
{
    public DropDownListData()
    {
        City = new List<SelectListItem> { };
    }
    public List<SelectListItem> City;
}

控制器

public ActionResult Travel()
{
    DropDownListData ddld = new DropDownListData();

    ddld.City = new List<SelectListItem>
    {
        new SelectListItem {Value = "Paris" ,Text = "Paris"},
        new SelectListItem {Value = "Moscow",Text = "Moscow"},
        new SelectListItem {Value = "Yerevan" ,Text = "Yerevan" }
    };
    return View(ddld);
}

查看

@model ASP.NET.Test.Models.DropDownListData

@{
    Layout = null;
}

Testing...
@{
    Html.DropDownList("series", Model.City, "Choose City");
}

为什么我没有看到DropDownList。我做错了什么?

2 个答案:

答案 0 :(得分:2)

使用以下代码按预期直接输出DropDownList:

@Html.DropDownList("series", Model.City, "Choose City");

您当前的使用情况通常会作为&#34;代码块&#34;如以下示例所示:

@{
    // This code will be executed and can be used to set variables, etc.
    var answer = 42;
}

<!-- This is an example of outputting your value -->
<p>
    The answer to the question is <b>@answer</b>.
</p>

因此,您当前的代码只会调用Html.DropDownList()方法,但实际上永远不会使用或输出它。但是,在@字符前加上它会将其视为表达式并相应地输出。

答案 1 :(得分:1)

你必须使用:

@Html.DropDownList("series", Model.City, "Choose City")

而不是:

@{
    Html.DropDownList("series", Model.City, "Choose City");
}

你所做的只是调用DropDownList函数,对返回的MvcHtmlString什么都不做。 ReSharper实际上给了我一个不使用返回值的警告。