2014-11-29 4 views
0

Первоначально я установил свой раскрывающийся список с кнопкой отправки, которая была в порядке, но теперь я хотел, чтобы она просто работала без кнопки (я добавил onchange). Однако теперь я нахожу еще одну трудность, которая первоначально при отображении страницы, если я «выбираю» первый вариант, ничего не происходит (очевидно), поэтому я хочу добавить «пожалуйста, выберите». Я нашел пару решений, таких как запись моего пользовательского списка SelectListOptions, но похоже, что это может быть сверху для моего дела. Может ли кто-нибудь пролить свет здесь и сообщить мне, что было бы самым простым вариантом здесь? Извините, если это простой ответ, я действительно застрял. Вот мой код:MVC dropdown select (blank) option

Модель

public class SurveyDropdownModel 
{ 
    public SelectList selectSurveys { get; set; } 
    public string selectedId { get; set; } 
    public IEnumerable<RespondentModel> respondents { get; set; } 

    public SurveyDropdownModel(List<SurveyModel> surveys) 
    { 
     selectSurveys = new SelectList(surveys, "SurveyID", "SurveyTitle"); 
     respondents = null; 
    } 
} 
public class SurveyModel 
{ 
    [Required] 
    [Display(Name = "Survey ID")] 
    public int SurveyID { get; set; } 

    [Display(Name = "Title")] 
    public string SurveyTitle { get; set; } 

    [Display(Name = "Updated")] 
    public DateTime SurveyUpdatedDate { get; set; } 

    [Display(Name = "Active")] 
    bool IsActive { get; set; } 
}   

Контроллер

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; 
     HealthCheckDataLayer.HealthCheckRepository repo = new HealthCheckRepository(connectionString); 

     List<SurveyModel> surveyList = repo.ReturnSurveys<SurveyModel>(); 
     var model = new SurveyDropdownModel(surveyList); 
     return View(model); 
    } 
    [HttpPost] 
    public ActionResult Index(SurveyDropdownModel model) 
    { 
     //not important here 
    } 
} 

Посмотреть

@model HealthCheckWebApp.Models.SurveyDropdownModel 
@{ 
    ViewBag.Title = "Home Page"; 
} 

<div class="row"> 
    <div class="col-md-4"> 
     <h4>Select product:</h4> 
     @using (Html.BeginForm("Index", "Home")) 
     { 
     @Html.DropDownList("selectedId", Model.selectSurveys, new { onchange = "this.form.submit()" }) 
     } 
    </div> 
</div> 

<br /> 
<br /> 

@if(Model.respondents!=null) 
{ 
@* not relevant here*@ 
} 

Я думаю, теперь й в я не включал, как мне потянуть мой список, я вызываю хранимую процедуру из моего репозитория там (требуется сделать это с помощью SP).

Спасибо.

ответ

1

Использование @Html.DropDownListFor. Here - описание.

Использование:

@Html.DropDownListFor(x=> x.selectedId, Model.selectSurveys, "Select something", new { onchange = "this.form.submit()")