Asp.net mvc 4 将cshtm内的下拉列表与服务器端数据绑定

Asp.net mvc 4 将cshtm内的下拉列表与服务器端数据绑定,asp.net-mvc-4,razor,Asp.net Mvc 4,Razor,我有一个用户列表,希望在顶部的导航栏上绑定它,这在很多页面上都是可见的,我如何绑定它,我不想在每个文件上添加代码,mvc4中是否有为每个视图调用的方法 我的看法是: <div class="navbar-collapse collapse"> <ul class="nav navbar-nav"> <li class="dropdown">

我有一个用户列表,希望在顶部的导航栏上绑定它,这在很多页面上都是可见的,我如何绑定它,我不想在每个文件上添加代码,mvc4中是否有为每个视图调用的方法

我的看法是:

<div class="navbar-collapse collapse">
                <ul class="nav navbar-nav">
                    <li class="dropdown">
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Name Three<b class="caret"></b></a>
                        <ul class="dropdown-menu">
//Here i want to show data dynamically, data can be in collection.
                            <li><a href="#">Name one</a></li>
                            <li><a href="#">Name two</a></li>
                            <li><a href="#">Name Three</a></li>
                            <li><a href="#">Four</a></li>
                        </ul>
                    </li>
                </ul>
            </div>

    • //这里我想动态地显示数据,数据可以被收集。
控制器:

ICollection<Names> names = this.obj.GetNames();
ICollection name=this.obj.GetNames();

在这种情况下,我更喜欢使用代码隐藏调用查看包。试试这样的

@Html.DropDownList("Action", PathToController.GetUsers())
然后在要放置此方法的控制器上

public static List<SelectListItem> GetUsers(){
    List<SelectListItem> ls = new List<SelectListItem>();
    var result = //database call here
    foreach(var temp in result){
        ls.Add(new SelectListItem() { Text = temp.Name, Value = temp.ID });
    }
    return ls;
}
公共静态列表GetUsers(){
列表ls=新列表();
var result=//在此处调用数据库
foreach(结果中的var temp){
添加(新的SelectListItem(){Text=temp.Name,Value=temp.ID});
}
返回ls;
}

在这种情况下,我更喜欢使用代码隐藏调用查看包。试试这样的

@Html.DropDownList("Action", PathToController.GetUsers())
然后在要放置此方法的控制器上

public static List<SelectListItem> GetUsers(){
    List<SelectListItem> ls = new List<SelectListItem>();
    var result = //database call here
    foreach(var temp in result){
        ls.Add(new SelectListItem() { Text = temp.Name, Value = temp.ID });
    }
    return ls;
}
公共静态列表GetUsers(){
列表ls=新列表();
var result=//在此处调用数据库
foreach(结果中的var temp){
添加(新的SelectListItem(){Text=temp.Name,Value=temp.ID});
}
返回ls;
}

在这种情况下,我更喜欢使用代码隐藏调用查看包。试试这样的

@Html.DropDownList("Action", PathToController.GetUsers())
然后在要放置此方法的控制器上

public static List<SelectListItem> GetUsers(){
    List<SelectListItem> ls = new List<SelectListItem>();
    var result = //database call here
    foreach(var temp in result){
        ls.Add(new SelectListItem() { Text = temp.Name, Value = temp.ID });
    }
    return ls;
}
公共静态列表GetUsers(){
列表ls=新列表();
var result=//在此处调用数据库
foreach(结果中的var temp){
添加(新的SelectListItem(){Text=temp.Name,Value=temp.ID});
}
返回ls;
}

在这种情况下,我更喜欢使用代码隐藏调用查看包。试试这样的

@Html.DropDownList("Action", PathToController.GetUsers())
然后在要放置此方法的控制器上

public static List<SelectListItem> GetUsers(){
    List<SelectListItem> ls = new List<SelectListItem>();
    var result = //database call here
    foreach(var temp in result){
        ls.Add(new SelectListItem() { Text = temp.Name, Value = temp.ID });
    }
    return ls;
}
公共静态列表GetUsers(){
列表ls=新列表();
var result=//在此处调用数据库
foreach(结果中的var temp){
添加(新的SelectListItem(){Text=temp.Name,Value=temp.ID});
}
返回ls;
}

您可以在布局中创建此项,并使用ViewBag或ViewData进行填充。一种方法是实现BaseController,在contstructor中填充ViewBag/ViewData,然后从该基本控制器继承每个控制器。该列表将充满我尝试在basecontroller中添加此项并使用viewbag填充的所有项目,但用户在cookies中添加此项后始终为空:(您可以在布局中创建此项,并使用ViewBag或ViewData进行填充。一种方法可以是实现BaseController,在Constructor中填充ViewBag/ViewData,然后从该基础控制器继承每个控制器。在我尝试在BaseController中添加此项并使用ViewBag进行填充的每个位置,列表都将充满项目,但用户始终为n。)将其添加到cookies中后:(您可以在布局中创建此项,并使用ViewBag或ViewData进行填充。一种方法可以是实现BaseController,在Constructor中填充ViewBag/ViewData,然后从该基础控制器继承每个控制器。在我尝试在BaseController中添加此项并使用ViewBag进行填充的每个位置,列表都将充满项目,但用户始终为n。)将其添加到cookies中后:(您可以在布局中创建此项,并使用ViewBag或ViewData进行填充。一种方法可以是实现BaseController,在Constructor中填充ViewBag/ViewData,然后从该基础控制器继承每个控制器。在我尝试在BaseController中添加此项并使用ViewBag进行填充的每个位置,列表都将充满项目,但用户始终为n。)将其添加到cookies中后:(