2016-03-30 12 views
0

Bitte lassen Sie mich versuchen, dies so gut wie möglich zu erklären.Verwenden Sie ActionLink, um den Wert der Eigenschaft zu erhöhen

Ich habe versucht, dies zu erforschen, aber ich weiß nicht, wie man es richtig formuliert, um zu erreichen, nach was ich suche.

Ich habe dieses auf meiner Seite: Example

Nun, was ich passieren soll, wenn der Benutzer klickt auf ‚Win Add‘ Der Wert erhöht sich um 1 (so würde der Wert 5, wenn der Benutzer auf den Link geklickt haben) .

Ich möchte, dass dies passiert, anstatt auf meine Edit Ansicht umgeleitet werden. Es scheint sinnlos/mühsam zu sein, ein Formular auszufüllen, & speichern Sie das Formular, wenn alles, was ich tun muss, ist der Wert dieser Zahl um 1.

Wie gehe ich dabei?

ich etwas in meinem Standard-Controller Edit Aktion nicht geändert haben hier so ist es:

public ActionResult Edit(int? id) 
    { 
     if (id == null) 
     { 
      return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
     } 
     Team team = db.Teams.Find(id); 
     if (team == null) 
     { 
      return HttpNotFound(); 
     } 
     return View(team); 
    } 

    // POST: Teams/Edit/5 
    // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
    // more details see http://go.microsoft.com/fwlink/?LinkId=317598. 
    [HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Edit([Bind(Include = "ID,TeamName,TotalWins, SeriesWins")] Team team) 
    { 
     if (ModelState.IsValid) 
     { 
      db.Entry(team).State = EntityState.Modified; 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 
     return View(team); 
    } 

Wie verwende ich meine ActionLink den Wert dieser Zahl zu erhöhen?

UPDATE:

HTML:

@Html.ActionLink("Add Win", "Edit", "Teams", new { id = 2 }, null) 
<tr> 
       @foreach (var item in Model.Where(x => x.TeamName == "example")) 
       { 
        <td class="text-center"> 
         <span id="teamLabel"> 
          @item.SeriesWins 
         </span> 

        </td> 
       } 
      </tr> 

Jede Hilfe sehr geschätzt wird.

+1

Ich werde keine vollständige Lösung geben, aber warum verwenden Sie nicht einfach Ajax? Darum geht es bei diesen xhr-Objekten. Wenn Sie wirklich asp.net mvc verwenden möchten, dann lesen Sie über Teilansichten. Sie können Teilansichten senden, ohne die gesamte Seite erneut zu rendern. vielleicht kann dir das helfen. – Trickzter

+0

Sie sollten inkrementieren mit Javascript und dann senden Sie das Formular – Fals

+0

@Fals Ich habe ein Update veröffentlicht, um meine HTML enthalten .. Wie gehe ich dabei mit js und dann das Formular zu senden? –

Antwort

1

Ich habe eine alternative Lösung gefunden.

Ich habe eine benutzerdefinierte ActionResult in meinem Controller erstellt, um die id zu finden und +1 zu der Eigenschaft hinzuzufügen, die ich ansprechen muss.

public ActionResult AddOne(int id) 
    { 
     Team team = db.database.Find(id); 
     team.SeriesWins += 1; 
     UpdateModel(team); 
     db.SaveChanges(); 

     return RedirectToAction("Index"); 
    } 
Verwandte Themen