Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 在下拉列表中选择一个值_Asp.net_Asp.net Mvc_Asp.net Mvc 3_Asp.net Mvc 2 - Fatal编程技术网

Asp.net 在下拉列表中选择一个值

Asp.net 在下拉列表中选择一个值,asp.net,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-2,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 2,我有以下声明: <%: Html.DropDownList("dropCity", new[] { new SelectlistItem { Text = "City1", Value = 1}, new SelectlistItem { Text = "City2", Value = 2}, new SelectlistItem { Text = "City3", Value = 3}})%> 如果我的控制器发送给包含此dropdownlist的aspx页面一个值为“3”的

我有以下声明:

<%: Html.DropDownList("dropCity", new[] { new SelectlistItem { Text = "City1", Value = 1}, new SelectlistItem { Text = "City2", Value = 2}, new SelectlistItem { Text = "City3", Value = 3}})%> 

如果我的控制器发送给包含此dropdownlist的aspx页面一个值为“3”的变量,我如何设置此dropdownlist以在页面加载时选择此选项


谢谢你的帮助

创建selectlistitem时,只需执行以下操作:

new SelectlistItem { Text = "City1", Value = 1, Selected=true}

如果您的控制器正在通过“3”,为什么不让它通过SelectListItem的所有列表

然后在或控制器中执行类似操作:

public ActionResult MyController(MyModel model) 
{
    // Build SelectListItem list
    ViewBag.CitiesList = new List<SelectListItem>() 
    {
        new SelectlistItem { Text = "City1", Value = 1, Selected = true}, 
        new SelectlistItem { Text = "City2", Value = 2}, 
        new SelectlistItem { Text = "City3", Value = 3}
    }

    View(model);
}
public ActionResult MyController(MyModel模型)
{
//生成SelectListItem列表
ViewBag.CitiesList=新列表()
{
新建SelectlistItem{Text=“City1”,Value=1,Selected=true},
新建SelectlistItem{Text=“City2”,值=2},
新建SelectlistItem{Text=“City3”,Value=3}
}
视图(模型);
}
并在视图中以这种方式接收:

<%: Html.DropDownList("dropCity", ViewBag.CitiesList as IEnumerable<SelectListItem>) %>

这样,选择合适城市的所有逻辑都在控制器中,从一开始就应该如此。

使用视图模型:

public class MyViewModel
{
    public string SelectedCityId { get; set; }
    public IEnumerable<SelectListItem> Cities { get; set; }
}
最后,在强类型视图中:

<%= Html.DropDownListFor(x => x.SelectedCityId, Model.Cities) %>
x.SelectedCityId,Model.Cities)%>

感谢您的及时回复!问题是我不知道来自控制器的选项。。一次可能是1。。另一方面,它可能是2。。或者3..@Dan SP-我不明白你的问题。您知道来自控制器的值,因为它来自控制器。执行Selected=myvalue==1、Selected=myvalue==2等操作。它来自控制器,这就是为什么我不能设置“Text=”City1“,Value=1,Selected=true”因为在任何其他情况下,我都可以从controller..@Dan SP获得值2 comming-如果您希望我们提供一个与您提供的代码示例不同的解决方案,这并没有多大帮助。您要求提供硬编码值问题的解决方案。如果您的真实代码不是硬编码的,那么请提供一个显示真实代码的示例,否则我们只是在浪费时间。这就是真实代码。我有一些其他的样品,但是我用了一个模型,这个很好用。问题是,我不会在我的问题中显示的案例中使用模型,请选中:model.code,new SelectList(model.dropDwonList,“code”,“Name”,VALUE\u FROM\u CONTROLLER),“Select One Option”,new{style=“width:180px”})%>@Dan SP,在ASP.NETMVC中,建议的方法是始终使用视图模型。总是。
public ActionResult Index()
{
    var model = new MyViewModel
    {
        // preselect the second city
        SelectedCityId = "2",
        Cities = new[]
        {
            new SelectListItem { Value = "1", Text = "City1" },
            new SelectListItem { Value = "2", Text = "City2" },
            new SelectListItem { Value = "3", Text = "City3" },
        }
    };
    return View(model);
}
<%= Html.DropDownListFor(x => x.SelectedCityId, Model.Cities) %>