2016-07-20 10 views
0

Ich mache eine Anwendung in ASP.NET MVC, mit der Sie ein Formular mit zwei Textfeldern und einem Zeichenfolgensatz aus einer exklusiven Auswahl bereitstellen können. Dies bedeutet eine Liste von Zeichenketten, die dem Benutzer angezeigt werden, dass bei der Auswahl (nur einer kann gleichzeitig ausgewählt werden) und der Übergabe (dieses Feld ist erforderlich) der Text aus der Auswahl an den Controller übergeben wird. Ich habe versucht, im Bootstrap Listengruppen zu verwenden, dann ein JQuery-Ereignis für onclick hinzuzufügen und den Wert eines ausgeblendeten Formularfelds festzulegen. Der Click-Handler funktioniert einwandfrei, aber die Werteinstellung hat ein Problem. Hier ist mein Code:Exklusive Auswahl an ASP.NET-Formular übergeben

<div class="col-xs-3"> 
      <div class="list-group" style="overflow-y: auto; height: 300px; width: 100%;"> 
       @Html.ActionLink("Create new occupation", "createOccupation", "Occupation", null, new { @class = "list-group-item" }) 
       @foreach (var occ in Get.AllOccupations().ToList()) 
       { 
        <a href="#" class="list-group-item">@occ.Title</a> 
       } 

      </div> 
     </div> 

<script> 
    $('.list-group-item').on('click', function() { 
     $('.list-group a.active').removeClass('active'); 
     $('#OccupancySelectBox').val($(this).find("a").first().text()); 
     $(this).addClass('active'); 
    }) 
</script> 
+0

was ist mit einer einfachen Dropdown-Liste? – ADyson

+0

Oder eine Optionsfeldgruppe? –

+0

Was ich zu fragen versuchte, ist, wie kann ich diese Werte an den Controller ohne diesen JQuery-Müll übergeben? – RhysO

Antwort

0

Was ich versuche, ist zu fragen, wie kann ich diese Werte an die Controller ohne diesen JQuery Müll passieren?

Sicher. Sie können das normale Formular-Posting ohne jQuery/ajax verwenden, wenn Sie dies bevorzugen.

Vorausgesetzt Sie haben eine Ansicht Modell haben wie diese

public class JobSelectionVm 
{ 
    public string FirstName {set;get;} 
    public string LastName { set;get;} 
    public int SelectedJobId {set;get; 
} 

Jetzt wird Ihrer Ansicht nach stark

@model JobSelectionVm 
@using(Html.BeginForm()) 
{ 
    <label>First Name</label> 
    @Html.TextBoxFor(s=>s.FirstName) 

    <label>Last Name</label> 
    @Html.TextBoxFor(s=>s.LastName) 

    <label>Select an Occupation</label> 
    var jobList = Get.AllOccupations().ToList(); 
    foreach (var occ in jobList) 
    { 
     @Html.RadioButtonFor(f => Model.SelectedJobId, ev.JobId) 
     <div>@ev.Title</div> 
    } 
    <input type="submit" /> 
} 

dieser Ansicht Modell eingegeben werden diese radion Tasten für Elemente in der Job-Liste Sammlung generieren. Wenn Sie das Formular absenden, ist die ID des ausgewählten Jobs im Eigenschaftswert SelectedJobId verfügbar.

[HttpPost] 
public ActionResult Create(JobSelectionVm model) 
{ 
    // check model.FirstName,model.LastName, model.SelectedJobId 
    // to do : return something 
} 

Auch können Sie die Ansicht Modell aktualisieren eine Eigenschaft zu haben, die Daten trägt für die Radio-Buttons (Get.AllOccupations()), so dass Sie vermeiden können Get.AllOccupations() in der Rasierer-Ansicht aufrufen.