Wie nennen jQuery popup-Fenster mit einer teilweisen Blick in ihn?
in meiner MVC-web-apps, die ich brauche, um erstellen Sie ein popup-Fenster mit einer Teilweisen Blick (enthält webgrid) in es,
Das problem ist die partielle view die Daten nicht zeigen, dass Sie auf die dialogbox, sehe ich nur die Titel. es scheint, ich habe ein problem mit dem controller-Aufruf, wie gut, bekannte bitte ich die dynamische Erstellung des Modells da das Modell erstellt wurde, dynamisch in den controller, nicht auf ein bestehendes Modell, nicht sicher, wie diese Art von Modell. Vielen Dank für jede Hilfe,
Dies ist meine codes:
dies ist die Schaltfläche in der razor-Ansicht:
das jQuery-codes:
$(document).ready(function () {
$("#GetEmp").click(function (event) {
$("#popup").dialog({
width: 200,
hight: 400,
title: 'please select an employee',
modal: true,
open: function (event, ui) {
$(this).load("@Url.Action("Travel", "GetEmployee")");
}
});
});
});
Dies ist controller-code:
public class Employee
{
public string EmpName;
public string EmpPhone;
public string EmpNum;
}
[HttpPost]
public ActionResult GetEmployee()
{
List<Employee> Emp = new List<Employee>
{
new Employee { EmpName= "ScottGu", EmpPhone = "23232323", EmpNum="242342"},
new Employee { EmpName = "Scott Hanselman", EmpPhone = "3435353", EmpNum="34535"},
new Employee { EmpName = "Jon Galloway", EmpPhone = "4534535345345",
EmpNum="345353"}
};
return PartialView("_EmpPartial", Emp );
}
Und dieser Mitarbeiter ist Teilansicht: bitte beachten Sie, ich bin mit dynamischen Modell, da das Modell dynamisch erstellt wird.
@model dynamic
<ul>
@foreach (var emp in Model) {
<li>
@emp.EmpName
</li>
}
</ul>
Hallo, vielen Dank für die schnelle Antwort, ich habe es versucht zu Entfernen [HttpPost] und verändert @foreach zu @foreach (var emp im Modell-als Liste),
aber das wird nicht kompiliert, die mit einem roten Unterstrich in es. muss ich halten, @ - Modell dynamische in meinem partial view?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ändern der controller:
Und Ihre jquery wäre wie:
Übergeben Sie Emp-view-Modell, das ist nicht ein dynamisches Objekt, so sollten Sie nicht verwenden
dynamic
innerhalb der Ansicht. Ich würde@model List<Employee>
im Blick.Auch, zum laden der Inhalte, die Sie durchführen
$(this).load("@Url.Action("Travel", "GetEmployee")");
dem senden einer GET-Anforderung an den server, aber Sie zugewiesen[HttpPost]
- Attribut, um Ihren controller, sodass es nicht mehr dazu dienen, einen get-request. Ich würde entfernen Sie die[HttpPost]
.UPDATE:
Eine bessere Lösung wäre eine ViewModel-Klasse wie folgt aus:
In meine Projekte, die ich, wie die Schaffung eines ViewModels Verzeichnis wo ich alle meine Modelle ansehen. Einige Leute einfach dort ViewModels in dem Modelle-Verzeichnis wenn. Je nachdem, wo Sie Ihre ViewModel, müssen Sie den namespace vor.
Müssen Sie auch fügen Sie die folgende Zeile an der Spitze der controller-Datei, so dass der controller kennt Ihr ViewModels:
Dann würden Sie es verwenden, wie Sie dies in Ihrem controller:
Und deine Meinung würde so Aussehen:
UPDATE 2:
Wenn Sie benötigen, um ein dynamisches Objekt zu übergeben Sie die Daten an die view, können Sie die eine, die bereits vorhanden und heißt ViewBag. Dann würde der controller wie folgt Aussehen:
Den mit der Richtlinie tatsächlich zu gehen an der Spitze des controller-Datei.
Und Ihre Ansicht wäre nicht stark typisiert, und es würde wie folgt Aussehen:
Um für diese zu arbeiten, sowohl Ihr controller und Ihre Sicht müssen sich bewusst sein, der die Employee-Klasse, daher der
using
Richtlinien. Möglicherweise müssen Sie passen Sie die namespace-je nachdem, wo Sie Ihre Mitarbeiter-Klasse. In dem obigen code, ich gehe davon aus, dass Sie es in Models\Mitarbeiter.cs:UPDATE 3:
Hier ist das JavaScript, das ich verwenden würde. Ich würde den laden, bevor Sie den dialog öffnen, und ich öffne es nur, wenn das laden erfolgreich war.
@Url.Action("ACTION_NAME", "CONTROLLER_NAME")
. Ich denke, man invertiert den Namen der Aktion und dem controller-Namen in Ihrem code.@foreach (var employee in (List<Employee>)ViewBag.Emp) {
statt@foreach (var employee in ViewBag.Emp as List<Employee>) {