2012-07-23 15 views
5

Ich schreibe eine ASP.NET MVC-Anwendung. Ich bin ein Anfänger, also bin ich mir sicher, dass das wirklich einfach ist. Ich referenzierte ASP.NET MVC - How to get checkbox values on post, aber der Code ist nicht mehr verfügbar, so dass es fast nutzlos.Checkbox-Werte beim Postback abrufen ASP.NET MVC

Hier ist meine Ansicht:

@using (@Html.BeginForm("Promote", "FPL", FormMethod.Post)) 
{ 
<div data-role="fieldcontain"> 
<fieldset id="PromotionInfo" name="PromotionInfo"> 
<legend><b>@Model.itemType Promotion Details</b></legend> 
    <label for="TargetDate">Target Date: </label> 
    <input type="date" id="TargetDate" data-role="datebox" data-options='{"mode": "flipbox"}' /> 

    <label for="EmailCC">Email cc List: </label> 
    <input type="email" id="EmailCC" /> 

    <div data-role="fieldcontain"> 
    <fieldset data-role="controlgroup"> 
    <legend>Choose Destination Server(s): </legend> 

    @foreach (DataRow server in Model.destinationServerList.Rows) 
    { 
    <label for="@server.ItemArray[0]">@server.ItemArray[1]</label> 
    <input type="checkbox" name="destinationServerSID" id="@server.ItemArray[0].ToString()" /> 
    } 

    </fieldset> 
    </div> 
</fieldset> 

</div> 

<input type="submit" value="Submit" /> 
} 

Und hier ist mein Controller:

public ActionResult Promote(string id) 
    { 
     //Model(item) construction occurs here 

     return View(item); 
    } 

    [HttpPost] 
    public ActionResult Promote(FormCollection collection) 
    { 
     try 
     { 
      string[] test = collection.GetValues("destinationServerSID"); 
     } 
     catch (Exception ex) 
     { 
      return null; 
     } 
    } 

Der Test [] Variable enthält einen 2 Artikel Array, von denen beide den Wert "auf" jedoch , meine Artikelliste ist länger als 2 Artikel. Es enthält nur einen "Ein" für jeden ausgewählten Wert, aber keine "Aus" -Werte. Ich brauche den tatsächlichen Wert des Kontrollkästchens (das ID-Feld).

Antwort

3

Die IDs werden nicht auf dem Server veröffentlicht. Nur der Name und der Wert werden auf dem Server und nur dann veröffentlicht, wenn das Kontrollkästchen aktiviert ist.

Versuchen Sie, das Attribut value mit @server.ItemArray[0].ToString() zu setzen.

<input type="checkbox" name="destinationServerSID" value="@server.ItemArray[0].ToString()" /> 
+1

wow, ich kann nicht glauben, dass ich das verpasst habe ... Vielen Dank, das ist alles was ich brauche. –

3

Das standardmäßige HTML-Post-Verhalten sendet keine Werte für ungeprüfte Kästchen. Sie können stattdessen die Html.CheckboxFor-Methode verwenden, die alle erforderlichen Eingaben generiert, um immer einen Wert zu veröffentlichen.

+0

Das würde auch funktionieren, aber die Antwort darüber, es als Wert anstelle einer ID zu übergeben, war alles was ich brauchte. Danke für die Antwort! –

Verwandte Themen