2017-04-19 1 views
0

Ich bin neu bei net-mvc.i habe eine Seite, die ein checkInDate am Anfang und eine Liste von Zimmern, die ich aus der Datenbank herausgezogen und auf der Seite aufgeführt foreach-Schleife verwenden. Ich habe eine Schaltfläche auf jeder Liste, die, wenn ausgewählt, sollte die ID des Raumes und checkinDate übergeben. Ich versuche, CheckInDate-Eingabe zusammen mit der ID des ausgewählten Raumes durch ein Anker-Tag in der Schaltfläche zu übergeben. Wie mache ich das? here is the view of the pageÜbergabe mehrerer Parameter durch html.actionlink asp.net-mvc

@model thePortfolio.Models.CustomerNRoomViewModel 

@{ 
    ViewBag.Title = "Index Booking"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

<div class="box"> 

    <h4>Room</h4> 
    @using (Html.BeginForm()) 
    { 
     <div class="box"> 
      @Html.LabelFor(model => model.Book.CheckInDate, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
      @Html.EditorFor(model => model.Book.CheckInDate, new { htmlAttributes = new { @class = "form-control" } }) 
      </div> 
     </div> 
     <br /> 

     foreach (var item in Model.RoomList) 
     { 
      var image = @item.RoomType.ToString() + ".jpg"; 
      image = image.Replace(" ", String.Empty); 

      <div class="row box"> 
       <div class="col-sm-4"> 
        <img class="img-responsive" src="~/img/rooms/@image"> 
       </div> 

       <div class="col-sm-6 text-left"> 

        @Html.DisplayFor(m => item.RoomId)<br /> 
        @Html.DisplayFor(m => item.RoomType)<br /> 
        @Html.DisplayFor(m => item.Description) 

       </div> 

       <div class="col-sm-2"> 
        <h4>Rates from</h4> 
        <i>per night</i> 
        <h2 style="color:red">[email protected]</h2> 

        @if (item.BookingStatus) 
        { 
         <button type="button" disabled>Not Available</button> 
        } 
        else 
        { 
         <button>@Html.ActionLink("Book This", "bookRoom", new { id = item.RoomId })</button> 


        } 
       </div> 
      </div> 
       <p></p> 


     } 

    } 
</div> 
+0

'CheckInDate' ist in der Ansicht editierbar, so dass Sie Javascript verwenden müssen, um das' href' Attribut basierend auf dem tatsächlichen Wert der Eingabe zu aktualisieren. –

Antwort

0

Nun ... Ich denke, dass in Ihrem Controller, müssen Sie eine Methode mit einem id-Parameter hinzuzufügen. Etwas wie folgt aus:

[HttpPost] 
public ActionResult Edit(int id, CustomerNRoomViewModel model) 

Der Parameter id sollte als Wert in der Abfragezeichenfolge des http-Aufruf gesendet werden.

+0

OP fragt, wie man den Wert in einem Link weitergibt (zB an eine GET-Methode, nicht an eine POST-Methode) –

+0

@Stephen Mücke Sorry, vielleicht versagt mein Englisch (ich bin kein Muttersprachler), aber das ist nicht was Ich habe verstanden. Wenn Sie Recht haben, dann ist Ihr Vorschlag, JavaScript-Browser-Seite zu verwenden, um das CheckInDate abzurufen, korrekt. Er sollte auch den Html.BeginForm-Helfer entfernen (es ist kein HTML-Formular mehr nötig) –

Verwandte Themen