2017-02-28 5 views
0

Ich habe einige Schwierigkeiten, den Wert eines SelectListItem \ DropDwown ausgewählten Werts aus einem ASP.Net MVC-Formular abzurufen.SelectListItem DropDownFor kann nicht ausgewählt werden Wert

Ich habe Vergangenheit Antworten geprüft und haben durch diese und haben keinen Erfolg

Ich habe auch einige andere Antworten zu, dass ich nach rechts zurück kippe geprüft sah jetzt

Mein Code in der Steuerung ist

public ActionResult QuickSearch() 
    { 
     var ddlValues = new List<DropDownValues> 
     { 
      new DropDownValues { Text= "5", Value = 5}, 
      new DropDownValues { Text= "10", Value = 5} 
     }; 

     var model = new QuickSearchViewModel(); 
     model.Distance = ddlValues.Select(x => new SelectListItem {Text = x.Text, Value = x.Value.ToString() }); 

     //var model = new QuickSearchViewModel() 
     //{ 
     // Distance = from value in ddlValues 
     //     select new SelectListItem 
     //     { 
     //      Text = value.Text, 
     //      Value = value.Value.ToString() 
     //     } 
     //}; 

     return PartialView(model); 
    } 

    [HttpPost] 
    public ActionResult QuickSearch(QuickSearchViewModel model) 
    { 
     if (ModelState.IsValid) 
     { 
      return RedirectToAction("QuickSearch", "Search", model); 
     } 
     return PartialView(model); 
    } 

Der Code zum Auffüllen der Auswahlliste funktioniert einwandfrei, und die Schaltfläche, die das HttpPost-Ereignis auslöst, funktioniert auch wie erwartet.

Aber für das Leben von mir kann ich den ausgewählten Wert nicht herausbekommen, es sei denn, ich benutze Ajax, was ich jetzt nicht tun möchte, es sei denn, ich möchte dies vom Home Controller zum Search Controller umleiten.

Dies ist der Razor \ HTML-Code der Teilansicht

@model SP.DABB.WebUI.Models.QuickSearchViewModel 

@using(Html.BeginForm("QuickSearch", "Home", FormMethod.Post)) 
{ 
<div class="form-group"> 
    <div class="col-md-6 col-lg-6"> 
     @Html.LabelFor(x => x.PostCode) 
    </div> 
    <div class="col-md-6 col-lg-6"> 
     @Html.TextBoxFor(x => x.PostCode, new { @class = "form-control" }) 
    </div> 
</div> 

<div class="form-group"> 
    <div class="col-md-6 col-lg-6"> 
     @Html.LabelFor(m => m.Distance, new { @class = "control-label" }) 
    </div> 
    <div class="col-md-6 col-lg-6"> 
     @Html.DropDownListFor(m => m.Distance, new SelectList(Model.Distance, "Value", "Text"), new { @class = "form-control" }) 
     @*@Html.DropDownListFor(m => m.Distance, Model.Distance, new { @class = "form-control" })*@ 
    </div> 
</div> 
<br /><br /> 
<div class="form-group"> 
    <div class="col-xs-12 col-sm-12 col-md-6 col-lg-6 pull-right"> 
     @*<input type="button" id="bttnQuickSearch" class="btn btn-info pull-right" value="Perform Quick Search"/>*@ 
     <button type="submit" id="bttnQuickSearch" class="btn btn-info pull-right">Search</button> 

    </div> 
</div> 

} 

- Bearbeiten - Ansicht Modell hinzugefügt

using System; 
using System.Collections.Generic; 
using System.ComponentModel.DataAnnotations; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 

namespace SP.DABB.WebUI.Models 
{ 
public class QuickSearchViewModel 
{ 
    [Display(Name = "Your Postcode")] 
    [StringLength(maximumLength:8, MinimumLength = 5, ErrorMessage = "Please provide your full postcode.")] 
    public string PostCode { get; set; } 
    [Display(Name = "Distance")] 
    public IEnumerable<SelectListItem> Distance { get; set; } 

    public int SelectedDistance { get; set; } 

    public QuickSearchViewModel() 
    { 
     Distance = new List<SelectListItem>(); 
    } 
} 
} 

Jedwedes Hilfe sehr geschätzt wird.

Antwort

1

Bitte fügen Sie Code Ihrer SP.DABB.WebUI.Models.QuickSearchViewModel

@EDIT

DropDownListFor erste Argument ist ein Parameter, der von Ihnen gewählten Wert binden möchten. In dieser Situation können Sie nur

ändern
@Html.DropDownListFor(m => m.Distance, new SelectList(Model.Distance, "Value", "Text"), new { @class = "form-control" }) 

zu:

@Html.DropDownListFor(m => m.SelectedDistance, Model.Distance, new { @class = "form-control" }) 
+0

ich die Frage bearbeitet haben das Ansichtsmodell jetzt –

+0

zu zeigen, wenn ich im selben Raum war ich würde dich küssen !! die eine Sache, die ich nicht versuchte, nicht einmal in Betracht gezogen .. danke für Ihre Hilfe –

Verwandte Themen