Entwickler-Ecke

ASP.NET und Web - [MVC] Checkboxen Änderungen in Datenbank übertragen


Kuehter - Do 02.06.16 07:47
Titel: [MVC] Checkboxen Änderungen in Datenbank übertragen
Habe eine Tabelle die ich bei Änderungen in die Datenbank übertragen will bis jetzt sieht es wie folgt aus


Model


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
        public int ID { get; set; }

        public int MitarbeiterID { get; set; }
        public int AuftragID { get; set; }

        public string Taetigkeit { get; set; }
        public bool gelesen { get; set; }
        public TimeSpan myTime { get; set; }
        public DateTime TimeStamp { get; set; }

        public virtual Auftrag Auftrag { get; set; }
        public virtual Mitarbeiter Mitarbeiter { get; set; }



Controller

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
        public ActionResult List([Bind(Include = "ID,MitarbeiterID,AuftragID,Taetigkeit,gelesen,myTime,TimeStamp")] Auftrag_Mitarbeiter auftragMitarbeiter)
        {
            var query = from c in db.Auftrag_Mitarbeiter orderby c.Mitarbeiter.Vorname select c;
            return View(query.ToList());
        }

        public ActionResult Index()
        {
            var auftrag_Mitarbeiter = db.Auftrag_Mitarbeiter.Include(a => a.Auftrag).Include(a => a.Mitarbeiter);
            return View(auftrag_Mitarbeiter.ToList());
        }



HTML-Dokument
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
@model List<Terminverwaltung.Models.Auftrag_Mitarbeiter>
@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

@using (Html.BeginForm("Index""Home", FormMethod.Post))
{
    <table border="1" cellpadding="6">
        @foreach (var item in Model)
        {
            <tr>
                <td>
                    @Html.EditorFor(modelitem => item.gelesen)
                </td>
                <td>
                    @Html.DisplayFor(modelitem => item.AuftragID)
                </td>
                <td>
                    @Html.DisplayFor(modelitem => item.Taetigkeit)
                </td>
                <td>
                    @Html.DisplayFor(modelitem => item.myTime)
                </td>
            </tr>
        }
        <tr>
            <td colspan="4">
                <input type="submit" value="Submit" />
            </td>
        </tr>
    </table>
}


@Html.AntiForgeryToken()
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
@Html.ActionLink("Search""List""Search", new { @class = "btn btn-info", @id = "addressSearch" })




Ich bekomme alle Daten angezeigt kann die Checkboxen auch bearbeiten, nur er übernimmt die Änderungen nicht in die Datenbank


Ralf Jansen - Do 02.06.16 21:25

Du brauchst für dein Form die passende Gegenstelle wohin deine Form Daten gesendet werden.
Wenn ich dein BeginForm richtig lese brauchst du an deinen HomeController eine Index Methode die einen Http Post annimmt.

Also irgendwie sowas


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
public class HomeController : Controller
{
    [HttpPost]
    public ActionResult Index(Terminverwaltung.Models.Auftrag_Mitarbeiter model)
    {
        // mach hier was mit model zum speichern

        return Redirect("deinLieberController/deineLiebeActionWohinDuNachDemPostenHinWillst");
    }
}