2017-03-21 5 views
1

Sorry für den verwirrenden Titel, ich habe Schwierigkeiten zu erklären, was ich versuche zu erreichen. Ich habe eine Ansicht, die derzeit 'Reisen' aus meiner Datenbank anzeigt (Ziel, Typ, Preis usw.). Ich habe einen Aktionslink benutzt und mein Ziel ist es, eine Reise auszuwählen, auf den Aktionslink zu klicken und auf eine Buchungsseite zu gelangen. Auf der Buchungsseite werden die Informationen für den ausgewählten Aktionslink angezeigt, und ich werde eine Dropdown-Liste hinzufügen, um die Anzahl der Personen auszuwählen, die auf der Reise sind.Wie würde ich Daten aus einer Ansicht in einer anderen Ansicht anzeigen?

Was ist der beste Weg, dies zu erreichen? Wäre eine Sitzung hier machbar? Ich bin völlig neu in MVC und versuche immer noch, meinen Kopf einzuwickeln, so wie es funktioniert! Vielen Dank im Voraus an jeden, der dies liest!

actionLink

TripController Code -

namespace WebApplication5.Controllers 
{ 
public class TripController : Controller 
{ 
    // GET: Trip 
    public ActionResult Index() 
    { 
     return View(); 
    } 
    public ActionResult List() 
    { 
     List<Trips> trips = new List<Trips>(); 
     using (SampleModel dc = new SampleModel()) 
     { 
      trips = dc.Trips.ToList(); 
     } 
      return View(trips); 
    } 
    public ViewResult Booking() 
    { 

     return View(); 
    } 
} 
} 

TripsModel Code -

[Table("Trips")] 
public partial class Trips 
{ 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.None)] 
    public int TripID { get; set; } 

    [StringLength(50)] 
    public string Destination { get; set; } 

    [StringLength(50)] 
    public string Type { get; set; } 

    public int? Price { get; set; } 
} 

Trip Listview-Code -

@model List<WebApplication5.Models.DB.Trips> 

@{ 
ViewBag.Title = "List of trips"; 
var grid = new WebGrid(source: Model, canPage: true, rowsPerPage: 10); 
grid.Pager(WebGridPagerModes.All); 
} 

<h2>List of Trips</h2> 

<div id="content"> 
@grid.GetHtml(
      tableStyle: "webgrid-table", 
      headerStyle: "webgrid-header", 
      footerStyle: "webgrid-footer", 
      alternatingRowStyle: "webgrid-alternating-row", 
      rowStyle: "webgrid-row-style", 
      columns: grid.Columns(
       grid.Column(columnName: "TripID", header: "TripID"), 
       grid.Column(columnName: "Destination", header:  "Destination"), 
       grid.Column(columnName: "Type", header: "Type"), 
       grid.Column(columnName: "Price", header: "Price"),    
       grid.Column(columnName: "Book", format: (item) =>  Html.ActionLink("Book", "Booking", new { id = item.TripID })) 
       )) 

</div> 

TripBookingView cod e -

@model WebApplication5.Models.DB.Trips 
+0

Ein Link ändern, um diese leichter machen würde, aber mit Ihnen aktuelle UI, müssen Sie die '.click()' Ereignis der Schaltfläche zu handhaben und bauen eine URL zu der Methode, zu der Sie umleiten möchten (einschließlich des Werts des ausgewählten Optionsfelds, die die ID der "Reise" wäre) und dann 'location.href = yourUrl;' –

+0

Wie wird ein Link es einfacher machen, und was müsste ich ändern, um die Radioknöpfe durch Links zu ersetzen? Danke @StephenMuecke – ACostea

+0

Weil es einfach '@ Html.ActionLink (" Book "," Booking ", neu {id = item.TripID})' sein kann (siehe [diese Antwort] (http://stackoverflow.com/questions/ 6167903/using-data-in-a-html-aktionlink-inside-a-webgrid-spalte-nicht-möglich) für mehr details) –

Antwort

0

so die einfachste Idee ist, eine Skriptfunktion wie

@section scripts{ 
<script> 
$(function(){ 
$('#book').on('click',function(){ 
windows.location.href('@url.ActionLink('Booking','Trip',new{price = price})) 
}) 
}) 
<script> 
} 

und in der Steuerungsseite

public Task ActionResult Booking(int price) 
{ 
//Do your stuff 
} 
0

Statt geben Knopf zu schreiben außerhalb der Taste machen kann/Verbindung in jeder Reihe des Rasters wie unten

@grid.GetHtml(columns: new [] { 
grid.Column(
"", 
header: "Actions", 
format: @<text>@Html.ActionLink("Book", "Book", new { id=item.TripID})</text>) }); 

und in der Steuerung des Controllers zu

anstelle eines Radiobutton
public ActionResult Book(int TripID) 
{ 
    //bring required data from DB for the TripID you received 
} 
Verwandte Themen