C# 如何从SQL数据库填充选择列表?

C# 如何从SQL数据库填充选择列表?,c#,sql-server,asp.net-mvc,linq,visual-studio-2015,C#,Sql Server,Asp.net Mvc,Linq,Visual Studio 2015,我在这里实际上是一个完全的初学者,所以我提前为自己的愚蠢道歉。我正试图在VisualStudio中创建一个简单的web应用程序,我需要创建一个选择(下拉)列表,其中的选项是从数据库(SQL Server)填充的。我已经得到了数据库,所以我不需要构建它,在设计或任何方面我都没有任何灵活性。我还尝试使用MVC设置 我意识到以前可能有人问过这个问题,但我遇到的所有答案都只是为每个被问到的特定情况提供了正确的代码。我真的很想了解它是如何工作的,以及最简单、最简洁的方法 我的Web.config文件中有连

我在这里实际上是一个完全的初学者,所以我提前为自己的愚蠢道歉。我正试图在VisualStudio中创建一个简单的web应用程序,我需要创建一个选择(下拉)列表,其中的选项是从数据库(SQL Server)填充的。我已经得到了数据库,所以我不需要构建它,在设计或任何方面我都没有任何灵活性。我还尝试使用MVC设置

我意识到以前可能有人问过这个问题,但我遇到的所有答案都只是为每个被问到的特定情况提供了正确的代码。我真的很想了解它是如何工作的,以及最简单、最简洁的方法

我的Web.config文件中有连接语句:

<connectionStrings>
<add name="ScrumTimerEntities" connectionString="metadata=res://*/Model.ScrumTimerEntities.csdl|res://*/Model.ScrumTimerEntities.ssdl|res://*/Model.ScrumTimerEntities.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=***;initial catalog=ScrumTimer;persist security info=True;user id=***;password=***;MultipleActiveResultSets=True;App=EntityFramework&quot;"
  providerName="System.Data.EntityClient" />
<add name="ScrumTimerConnectionString" connectionString="Data Source=stem.arvixe.com;Initial Catalog=ScrumTimer;Persist Security Info=True;User ID=scrumtimer-admin;Password=test1234;MultipleActiveResultSets=True;Application Name=EntityFramework"
  providerName="System.Data.SqlClient" />

我正在使用Visual Studio 2015和C#

编辑:添加代码。我没有把这个放在第一位,因为这一切都与我正在尝试做的事情无关,因为我真的不知道从哪里开始,但我想我也没有足够的知识知道这并不重要!您可以看到,我正在尝试创建一个计时器,当计时器达到零时,它会向服务器发送消息。我需要下拉列表来包含数据库中的用户列表

看法-

@{
    ViewBag.Title = "Home Page";
}
@section scripts
{
    <script>
        var gritterAdd = function (message) {
            $.gritter.add({
                // (string | mandatory) the heading of the notification
                title: 'Notice!',
                // (string | mandatory) the text inside the notification
                text: message,
            });
        }

        $(function () {
            var totalTime = 15;
            var i = totalTime;
            $('.time-remaining').html(i);
            $('.start-button').click(function () {
                var i = totalTime;
                $('.time-remaining').html(i);
                var minute = setInterval(function() {
                    i--;
                    $('.time-remaining').html(i);

                    if (i == 0) {
                        clearInterval(minute);
                        $('.time-remaining').html('Your time is up!');

                        var usernameValue = $("#username").val();
                        var timeRemaining = $("#time-remaining").val();
                        var timeUsedValue = totalTime;
                        //this is obviously impossible right now, but in the future, the user should be able to stop the clock early.
                        if (i > 0) { timeUsedValue = totalTime - timeRemaining; }

                        //here we are going to send a request to the server.
                        $.ajax('/home/updateserver', {
                            type: 'POST',
                            data: { username: usernameValue, timeused: timeUsedValue},
                            success: function (data) {
                                if (data.success) {
                                    gritterAdd(data.updatedUsername + " was updated on server" + "\n A total of " + timeUsedValue + " seconds were used.");
                                } else {
                                    gritterAdd("An error occurred while updating.");
                                }
                            }
                        });
                    }

                    if (i == 10) { gritterAdd('You have 10 seconds remaining.'); }
                }, 1000);
            });
        });
    </script>
}

<div>
    <p>You've reached the home page!</p>

    <div class="timer-container">
        <h2>User:</h2>
        @*<select id="username">
            <option value="Joe">Joe</option>
            <option value="Brendan">Brendan</option>
        </select>*@

        <span>Time Remaining:</span>
        <p class="time-remaining"></p>
        <button class="start-button">Start</button>
    </div>
</div>
@{
ViewBag.Title=“主页”;
}
@节脚本
{
var gritterAdd=函数(消息){
$.gritter.add({
//(字符串|必填)通知的标题
标题:“通知!”,
//(字符串|必填)通知中的文本
文本:消息,
});
}
$(函数(){
var totalTime=15;
var i=总时间;
$('剩余时间').html(i);
$('.start按钮')。单击(函数(){
var i=总时间;
$('剩余时间').html(i);
变量分钟=设置间隔(函数(){
我--;
$('剩余时间').html(i);
如果(i==0){
间隔时间(分钟);
$('.time remaining').html('您的时间到了!');
var usernameValue=$(“#username”).val();
var timeRemaining=$(“#剩余时间”).val();
var timeUsedValue=总时间;
//这显然是不可能的现在,但在未来,用户应该能够停止时钟早。
如果(i>0){timeUsedValue=totalTime-timeRemaining;}
//这里我们将向服务器发送一个请求。
$.ajax(“/home/updateserver”{
键入:“POST”,
数据:{username:usernameValue,timeused:timeUsedValue},
成功:功能(数据){
if(data.success){
gritterAdd(data.UpdateUserName+”已在服务器“+”上更新\n总共使用了“+timeUsedValue+”秒。”);
}否则{
gritterAdd(“更新时出错”);
}
}
});
}
如果(i==10){gritterAdd('您还有10秒时间');}
}, 1000);
});
});
}
您已到达主页

用户: @* 乔 布伦丹 *@ 剩余时间:

开始
和控制器-

namespace ScrumTimer.Web.Controllers
{
    public class HomeController : Controller
    {
        //
        // GET: /Home/
        public ActionResult Index()
        {
            return View();
        }

        public ActionResult About()
        {
            return View();
        }

        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        public JsonResult UpdateServer(string username, int timeUsed)
        {
            using (var context = new ScrumTimerEntities())
            {
                var user = context.UserProfiles.SingleOrDefault(u => u.Username == username);

                var scrumTime = new ScrumTime {UserProfile = user, TimeUsed = timeUsed, CreatedAt = DateTime.Now};
                context.ScrumTimes.Add(scrumTime);

                context.SaveChanges();

                return Json(new { success = true, updatedUsername = username, scrumTimeId = scrumTime.Id });
            }
        }
    }
}
名称空间ScrumTimer.Web.Controllers
{
公共类HomeController:控制器
{
//
//回家/
公共行动结果索引()
{
返回视图();
}
关于()的公共行动结果
{
返回视图();
}
/// 
/// 
/// 
/// 
[HttpPost]
public JsonResult UpdateServer(字符串用户名,int timeUsed)
{
使用(var context=newscrumtimerenties())
{
var user=context.UserProfiles.SingleOrDefault(u=>u.Username==Username);
var scrumTime=new scrumTime{UserProfile=user,TimeUsed=TimeUsed,CreatedAt=DateTime.Now};
context.ScrumTimes.Add(scrumTime);
SaveChanges();
返回Json(新的{success=true,updatedUsername=username,scrumTimeId=scrumTime.Id});
}
}
}
}

一个关于如何在MVC中创建dropdownlist的小示例。不包括从数据库获取数据的代码,但可以在需要时添加

型号:

public class ScrumTimerModel{
       [DisplayName("My display name")]
       public int SelectedItem { get; set; }

       public List<SelectListItem> Items { get; set; }
}
填充模型并在视图上设置模型。索引页面将获得本例中的模型。listFromDb是从数据库检索的行列表。通过在模型上设置selectedItem属性,可以在下拉列表中设置选定项

视图(cshtml):

@model ScrumTimer.Web.Models.ScrumTimerModel
@Html.LabelFor(t=>t.SelectedItem)
@Html.DropDownListFor(t=>t.SelectedItem,Model.Items)

@视图顶部的模型定义视图将使用的模型。可以使用模型项检索模型属性。

可以使用Html.DropDownList助手方法绘制DropDownList,此方法的一个参数是从数据库中获取的集合,如果可以粘贴一些代码、视图代码和控制器代码,EntityFramework类和上下文,如果您希望我们为您提供代码。没有看到你的代码,你不能给你更多的原则和想法
 public ActionResult Index()
 {
            //Get data from database
            return View(new ScrumTimerModel(){Items=listFromDb.Select(t=>
                        new  SelectListItem(){ 
                        Text=t.Name, Value=t.Value
                   }) 
            });
 }
@model ScrumTimer.Web.Models.ScrumTimerModel
<div>
    <div>@Html.LabelFor(t=>t.SelectedItem)</div>
    <div>@Html.DropDownListFor(t => t.SelectedItem, Model.Items)</div>
</div>