2016-05-24 13 views
2

Im Versuch, modal in bestimmtem Pfad zu öffnen asp.net MVC 4 + Jquery verwenden, herer der Code:ASP.NET MVC 4 Öffnen Bootstrap modal mit jquery

Card.cshtml

<div class="btn-group"> 
    <button class="btn btn-primary openModal" data-path="/Client/Edit/@Model.ClientID">Editar</button> 
    <button class="btn btn-primary openModal" data-path="/Client/Products/@Model.ClientID">Products</button> 
</div> 

dann in modal.js

$(document).on('click', '.openModal', function() { 
    var path = $(this).attr("data-path"); 
    $("#modal").load(path, function() { 
     $("#modal").modal(); 
    }) 
}); 

in ClientController

public ActionResult Edit(long id = 0) 
{ 
    Client client = db.Clients.Find(id); 

    if (client == null) 
    { 
     return HttpNotFound(); 
    } 

    return View(client); 
} 

public ActionResult Products(long clientID) 
{ 
    return View(db.Products.Where(p => p.ClientID == clientID).ToList()); 
} 

Die Aktion Bearbeiten funktioniert, aber die Aktion Produkte nicht (ich setze einen Haltepunkt, und dieser wird nicht aufgerufen). Was ist los mit dir?

+0

Haben Sie die Antwort überprüft, gibt es einen Fehler? – RRK

+0

Der Browser einfach "verblassen" wie wenn "Edit" Modal öffnen, aber nicht passieren, die "Produkte Aktion" des Controllers wird nicht aufgerufen, aber checking auf Chrom die "Pfad" -Eigenschaft von Jquery-Code ist richtig – Rieth

Antwort

0

Das Problem war der Name des Parameters

public ActionResult Products(long clientID) 
{ 
    return View(db.Products.Where(p => p.ClientID == clientID).ToList()); 
} 

von clientID Changed nur id und arbeitet. Es ist, weil Standardrouten ist

public static void RegisterRoutes(RouteCollection routes) 
     { 
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

      routes.MapRoute(
       name: "Default", 
       url: "{controller}/{action}/{id}", 
       defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
      ); 
     }