2016-05-16 8 views
0

Ich bin mit .Net MVC5 und ich versuche, eine Indexanzeige mit einem Link ändern (oder Taste) zu erstellen, wird POST (so verwenden kann ich nicht Action) eine gesamte Modellieren Sie Entität aus der Liste der Entitäten, die in der Ansicht angezeigt werden. Wie mache ich es?MVC5 ein Modell Artikel aus View in eine Steuerung vorbei

mein Code (bisher) unter

@model IEnumerable<Projname.Models.MyEntity> 
<!DOCTYPE html> 

<html> 
<head> 
    <meta name="viewport" content="width=device-width" /> 
    <title>Index</title> 
</head> 
<body> 
    <p> 
     @Html.ActionLink("Create New", "Create") 
    </p> 
    <table class="table"> 
     <tr> 

      <th> 
       @Html.DisplayNameFor(model => model.Name) 
      </th> 
      <th>Hello there</th> 
      <th>life is good</th> 
      </tr> 

    @foreach (var item in Model) { 
     <tr> 

      <td> 
       @Html.DisplayFor(modelItem => item.Name) 
      </td> 
      <td> 

       @using (Html.BeginForm("Edit", "Edit", FormMethod.Post)) 
       { 
        @Html.Hidden(mytem => item); 

      <input type="submit" value="Edit" class="btn btn-default" /> 
       } 
      </td> 
      <td>     
       @Html.ActionLink("Details", "Details", new { id = item.PrimeKey }) | 
       @Html.ActionLink("Delete", "Delete", new { id = item.PrimeKey }) 
      </td> 
      </tr> 
    } 

    </table> 
</body> 
</html> 

Ich gehe davon aus, dass es ein besserer Weg, es zu tun, anstatt ein verstecktes Feld der Eigenschaften der Einheit für jeden zu schaffen.

+1

Pass nur die ID/Primärschlüssel myItem und wieder abrufen das Element aus der Datenbank wenn Sie es an Ihre Bearbeitungsansicht übergeben. – AWinkle

+0

Warum das ganze Modell passiert, nur die Id wird – scottdavidwalker

+1

@AWinkle tut normalerweise, dass ich tun würde, aber da ich Azure Tabellen verwenden, nur die Zeilenschlüssel (Primärschlüssel) in der Abfrage zu einem unerwünschten vollständigen Tabellenscan führen würde Angabe http://stackoverflow.com/questions/19715885/azure-tables-query-by-rowkey-as-condition. also versuche ich es so gut wie möglich zu vermeiden. – JOW

Antwort

0

Sie müssen die Einzelteile setzen Sie bearbeiten möchten, oder in eine Form ändern

<form class="form-horizontal" action="GetItemsFromView" method="post"> 
    <input type="text" name="EditedModelItem"> 
</form> 

Danach Sie jede bearbeitete Element in Ihrem Controller aufrufen können, durch String hold = Request.Form [ „EditedModelItem“] ; in der GetItemsFromView-Methode.

0

Wrap alles in:

@using (Html.BeginForm("Edit", "Edit", FormMethod.Post)) 
{     
} 

Dann:

public ActionResult Edit(Model model) 
{ 
     if (ModelState.IsValid) 
     { 
     } 
} 

Oder:

public ActionResult Edit(FormCollection formCollection) 
{ 
} 
Verwandte Themen