2015-07-24 6 views
0

только начал учиться делать динамические страницы с помощью WebMatrix и попал в дорожный блок. (Длинная история статического html и некоторых php с помощью notepad ++, но это для меня новичок.)Добавление заполненной базы данных раскрывающегося списка Razor

Вкратце: я пытаюсь дать людям возможность создать новую запись команды в базе данных или присоединиться к существующей команде из раскрывающегося списка html helper, заполненного из базы данных. Я пробовал различные способы сделать это в течение большей части двух дней и, похоже, не могу понять это после обширных поисковиков здесь и на ASP.net. Я также надеюсь выяснить, как разрешить создание новой команды или присоединиться к существующей команде уже в БД на той же странице, не вставляя запятые в базу данных.

Я удалил все мои попытки в раскрывающемся списке и делюсь, что в настоящее время работает без html.dropdown:

@{ 
    Validation.RequireField("FName", "Your first name is required"); 
    Validation.RequireField("LName", "Your last name is required"); 
    Validation.RequireField("Team", "A team is required to play"); 
    Validation.RequireField("Pledge", "You must donate to play."); 

    var db = Database.Open("BBBT"); 
    var FName = Request.Form["FName"]; 
    var LName = Request.Form["LName"]; 
    var Team = Request.Form["Team"]; 
    var Pledge = Request.Form["Pledge"]; 

    if (IsPost && Validation.IsValid()) { 
     if(ModelState.IsValid) { 
      var insertQuery = "INSERT INTO Players (FName, LName, Team, Pledge) " + 
       "VALUES (@0, @1, @2, @3)"; 
      db.Execute(insertQuery, FName, LName, Team, Pledge); 
      Response.Redirect("~/ListTeams"); 
     } 

    } 
} 

.... Снип ....

<!DOCTYPE html> 
<html> 
<head> 
<title>Register</title> 
</head> 
<body> 
<h1>Register</h1> 

@Html.ValidationSummary("Errors with your submission:") 

<form method="post" action=""> 
    <fieldset> 
    <legend>Join the fun!</legend> 
    <div> 
     <label>First Name:</label> 
     <input name="FName" type="text" size="50" value="@FName" /> 
     </div> 
     <div> 
     <label>Last Name:</label> 
     <input name="LName" type="text" size="50" value="@LName" /> 
    </div> 
    <div> 
     <label>Create a Team</label> 
     <input name="Team" type="text" size="50" value="@Team" /> 
     </div> 
     <div> 
     <label>Or Joing an Existing Team</label> 
<!-- This is where I would like to put the Dropdown list--> 
     @Html.DropDownList 
     </div> 
    <div> 
     <label>Pledge:</label> 
     <input name="Pledge" type="text" size="50" value="@Pledge" /> 
    </div> 
    <div> 
     <label>&nbsp;</label> 
     <input type="submit" value="Insert" class="submit" /> 
    </div> 
    </fieldset> 
</form> 
</body> 
</html> 

Любой направление было бы признателен! Спасибо.

+0

Это помечено как MVC, но я не вижу вашего контроллера или где вы используете контроллер. – Robert

ответ

0

Ваш результат будет получен в два этапа. Сначала создайте список, а затем отобразите его.

В блоке кода в верхней части страницы, добавьте этот код

List<string> Teams = new List<string>(); 
foreach(var row in db.Query("SELECT DISTINCT Team FROM Players")) 
{ 
Teams.Add(row.Team); 
} 

и в том месте, вы хотите, чтобы выпадающий заполнить список

<select name="Team"> 
@foreach(string Teamname in Teams) 
{ 
<option value="@Teamname ">@Teamname </option> 
} 
</select> 

EDIT:

<select name="Team" id="TeamDropdown" onchange="toggleteamcreation()"> 
    @foreach(string Teamname in Teams) 
    { 
     <option value="@Teamname ">@Teamname </option> 
    } 
    <option value"New">Create New Team</option> 
</select> 
<script> 
function toggleteamcreation(){ 
    if(document.getElementById('TeamDropdown').value=="New"){ 
     document.getElementById('Create_New_Team').style.display="block"; 
    } 
    else{ 
     document.getElementById('Create_New_Team').style.display="none"; 
    } 
} 
</script> 
<div id="Create_New_Team" style="display:none"> 
    <label>Create a Team</label> 
    <input name="Team" type="text" size="50" value="@Team" /> 
</div> 
+0

Абхишек, спасибо! Думаю, мы идем в правильном направлении. К сожалению, я получаю «CS0136 CS0136: Локальная переменная с именем« Команда »не может быть объявлена ​​в этой области, потому что она придавала бы другое значение« Команде », которая уже используется в« родительской или текущей »области, чтобы обозначить что-то еще " ошибка. Я попытался обменять команду на имя таблицы и различные другие параметры, но все равно получить ошибку в строке с «@foreach (строка Team in Teams) – DFLguy

+0

Моя ошибка, я не понял, что использовал имя« Команда «дважды одновременно в той же области. Отредактировав ответ –

+0

Огромное вам спасибо! Теперь мне просто нужно выяснить, как разрешить или создать команду или присоединиться к команде, а не делать обе с одинаковой формой. – DFLguy

 Смежные вопросы

  • Нет связанных вопросов^_^