2017-05-23 5 views
-2

Ich habe ein MVC-Formular mit einem HTML-Select-Tag innerhalb. Die Auswahl wird von JavaScript aufgefüllt. Wie sende ich die ausgewählte Option mit dem Formular absenden?MVC Formular senden gewonnen Senden Sie das ausgewählte Tag Option

@using (Html.BeginForm("LoginFromTest", "Login", FormMethod.Post)) 
{ 
    @Html.ValidationSummary(true, "Login failed. Check your login details."); 
    <div style="margin: 10px;"> 
     <fieldset> 
      <legend>Login</legend> 

      <div class="editor-label"> 
       Username: 
      </div> 
      <div class="editor-field"> 
       <input type="text" name="user" /> 
      </div> 

      <div class="editor-label"> 
       Password: 
      </div> 
      <div class="editor-field"> 
       <input type="password" name="password" /> 
      </div> 

      <div class="editor-label"> 
       Authority: 
      </div> 
      <div class="editor-field"> 
       <select id="authority" /> 
      </div> 

      <input type="submit" value="Log In" /> 
      <br/> 
      @if (!string.IsNullOrWhiteSpace(ViewBag.Error)) 
      { 
       <span style="color: red;">@ViewBag.Error</span> 
      } 
     </fieldset> 
    </div> 
} 

Dank

+0

Verwenden Sie das Attribut 'name', um den ausgewählten Namen zuzuweisen, der später mit' Bind'/'Include' an die Controller-Aktionsmethode übergeben wurde. Aber es ist besser, DropDownList (For) mit der Modellbindung zu verwenden. –

+0

Mögliches Duplikat von [DropDownList in ASP.NET MVC - Wert nicht veröffentlicht] (https://Stackoverflow.com/questions/27514830/dropdownlist-in-asp-net-mvc-value-not-posted) – rolspace

+0

Geben Sie es einfach ein 'name' entspricht der Eigenschaft Ihres Modells oder dem Argument Ihrer Aktionsmethode. Dann senden Sie das Formular als normal – Liam

Antwort

0

Ihre Aktion-Methode Vorausgesetzt, sieht etwa so aus:

public ActionResult LoginFromTest(string user, string password, string authority) 

Sie müssen nur Ihre wählen Sie einen Namen, um die Parameter Sie es auffüllen möchten passende geben:

<div class="editor-field"> 
    <select id="authority" name="authority"> 
     <option value="X" /> 
     <option value="Y" /> 
    </select> 
</div> 

Wenn Ihre Bindung zu einem Modell Ihr Modell sein muss:

public class myModel 
{ 
    public string username {get; set;} 
    public string password {get; set;} 
    public string authority {get; set;} 
} 

Ihre Aktion wird dann wie folgt aussehen:

public ActionResult LoginFromTest(myModel model) 

aber der Name bleibt gleich. Sie können auch die Helfer @Html.DropDowListFor und @Html.DropDownList verwenden, aber es ist durchaus möglich, dies mit flachem HTML zu tun.

+0

Es war das Attribut "Name", das fehlte. Ich habe versehentlich das Attribut "ID" verwendet. Vielen Dank –