Πώς θα μπορούσα να φέρω μια παράμετρο από αυτή την αρχιτεκτονική MVC;

ψήφοι
0

Έχω αυτή τη σελίδα HTML σε ένα έργο ASP .NET, και θα πρέπει να δημιουργήσει ένα σελιδοποίηση για έναν πίνακα των στοιχείων. Το πρόβλημα είναι, στην αρχιτεκτονική τάξη που είναι ήδη σε ισχύ, το μόνο πράγμα που μπορεί να έχει για το μοντέλο μου είναι IEnumerable ενός μοντέλου άποψη. Το μόνο πράγμα που θα χρειαστεί είναι να φέρω μια ακέραια τιμή είτε από τον ελεγκτή μου ή την προβολή επιστρέφει. Από εκείνη τη ακέραιος, που θα αντιπροσωπεύουν τον αριθμό των πλήκτρων που απαιτούνται για τη δημιουργία του σελιδοποίηση, θα ήθελα να το δημιουργήσετε, δείτε HTML.

ελεγκτής μου δημιουργεί τη λίστα των στοιχείων και επιστρέφει στο μοντέλο αυτό κάνοντας μια SQL Αίτηση που επιλέγει ένα συγκεκριμένο ποσό στοιχείο από μια συγκεκριμένη απόκλιση, ανάλογα με τις παραμέτρους URL μου.

Εδώ είναι η HTML, και ποια είναι η κωδική πίσω από το χειριστήριο θα μοιάζει με:

@model  IEnumerable<ItemIndexViewModel>

<h2>@UiText.PageTitles.ITEM_LIST</h2>
<hr />
<div class=col-md-12>
    <div class=col-md-9>
        <table class=table id=client-index>
            <thead>
                <tr>
                    <th class=green-table-head-1>
                        @Html.DisplayNameFor(model => model.Name)
                    </th>
                    <th class=green-table-head-1>
                        @Html.DisplayNameFor(model => model.Id)
                    </th>
                </tr>
            </thead>
            <tbody>
                @foreach (ItemViewModel item in Model)
                {
                    @*Here, I have my table of items being generated*@
                }
            </tbody>
        </table>
        <div id=pagination>
            <ul>
                @for (int i = 0; i < [I need my int right here]; i++)
                {
                    @*I will generate buttons here*@
                }
            </ul>
        </div>
    </div>
</div>

public virtual ActionResult Index()
{
    int ownerId = _httpContext.GetUserOwnerId();
    int amountPerPage = 0;
    int pageIndex = 0;

    Int32.TryParse(Request.QueryString[amountPerPage], out amountPerPage);
    Int32.TryParse(Request.QueryString[pageIndex], out pageIndex);

    if (amountPerPage <= 0)
    {
        amountPerPage = 10;
    }
    if (pageIndex <= 0)
    {
        pageIndex = 1;
    }

    List<Item> items = _itemRepository.GetByPage(pageIndex, amountPerPage).ToList();

    // Make view models from the list of items
    List<ItemIndexViewModel> itemIndexViewModels = Mapper.Map<List<ItemIndexViewModel>>(items);

    // Create the buttons for the HTML
    int totalAmount = _itemRepository.Count();
    int totalPages = (Int32)Math.Ceiling(Decimal.Divide(totalAmount, amountPerPage));

    // Set update the navigation trace
    SetTraceRoot(MVC.Item.Index(), MVC.Item.ActionNames.Index);

    return View(itemIndexViewModels.OrderBy(x => x.Name));
}

Τι θα ήταν ένας καλός τρόπος για τη δημιουργία ενός σελιδοποίηση; Ψάχνω για ευελιξία, διότι η διαδικασία αυτή θα εφαρμοστεί για περισσότερο από μία σελίδα και για περισσότερες από μία κατηγορίες αντικειμένων. Έχω ήδη δοκιμάσει κάποια πράγματα χωρίς αποτέλεσμα, όπως η χρήση μιας τάξης να περιέχει λίστα μου άποψη μοντέλων και έναν ακέραιο για τον αριθμό των σελίδων που χρειάζονται για να τα αποθηκεύσει.

Δημοσιεύθηκε 27/11/2018 στις 17:34
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
0

Μπορείτε να χρησιμοποιήσετε ViewBagείτε ViewDataχάρη στη δράση του ελεγκτή για την παροχή αξίας τηλεειδοποίησης πριν από την επιστροφή άποψη:

ViewBag.TotalPages = totalPages;

Και να περάσει την αξία του στο forβρόχο για να δημιουργήσει σελιδοποίηση σε πλάγια όψη:

@for (int i = 0; i < ViewBag.TotalPages; i++)
{
    @* generate paging buttons *@
}

Συνήθως ViewBagιδιότητες δεν απαιτούν χυτού τύπου για απλούς τύπους (τιμές αριθμητικό & εγχόρδων), αλλά βεβαιωθείτε ότι η τιμή έχει εκχωρηθεί για να αποφευχθεί μηδενική επιστροφή.

Απαντήθηκε 28/11/2018 στις 01:29
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more