簡體   English   中英

Asp.Net-EF-MVC-索引行

[英]Asp.Net - EF - MVC - Indexing Rows

我正在使用Asp.NetEF6MVC ),並且在我的視圖中存儲了一些數據。 我需要為每行建立一些索引。 這是視圖。

在此處輸入圖片說明

對於每一行,我都有0個索引。 我想知道,如果EF中有一些內置功能,這將有助於為每行添加索引(1,2,3 ....) ,並且在創建或刪除新行時會自動更新索引。

這是用於在我的視圖中創建表和進行分頁的代碼。

<div class="bs-example">

        <div class="table-responsive"> 
            <div class="panel panel-default">
                <table class="table table-striped table-hover table-bordered" cellspacing="0" data-toggle="table" data-click-to-select="true">
                    <tr>
                        <th style="vertical-align:middle;" class="text-center">
                            Index
                        </th>
                        <th style="vertical-align:middle;" class="text-center">
                            @Html.ActionLink("English", "Index", new { sortOrder = ViewBag.EnglishSortParm, currentFilter = ViewBag.CurrentFilter })
                        </th>
                        <th style="vertical-align:middle;" class="text-center">
                            @Html.ActionLink("Russian", "Index", new { sortOrder = ViewBag.RussianSortParm, currentFilter = ViewBag.CurrentFilter })
                        </th>
                        <th style="vertical-align:middle;" class="text-center">
                            @Html.ActionLink("Armenian", "Index", new { sortOrder = ViewBag.ArmenianSortParm, currentFilter = ViewBag.CurrentFilter })
                        </th>
                        <th style="vertical-align:middle;" class="text-center">
                            @Html.ActionLink("French", "Index", new { sortOrder = ViewBag.FrenchSortParm, currentFilter = ViewBag.CurrentFilter })
                        </th>
                        <th style="vertical-align:middle;" class="text-center">
                            @Html.ActionLink("Spanish", "Index", new { sortOrder = ViewBag.SpanishSortParm, currentFilter = ViewBag.CurrentFilter })
                        </th>
                        <th style="vertical-align:middle;" class="text-center">
                            @Html.ActionLink("Arabic", "Index", new { sortOrder = ViewBag.ArabicSortParm, currentFilter = ViewBag.CurrentFilter })
                        </th>

                        <th></th>
                    </tr>
                    @{

                    foreach (var item in Model.Item1)
                    {
                        <tr class="clickableRow">
                            <td style="vertical-align:middle; font-size:medium;font-style:italic;" class="text-center">
                                @ViewBag.IndexOfRow.ToInt32
                            </td>

                            <td style="vertical-align:middle;" class="text-center">
                                @Html.DisplayFor(modelItem => item.English)
                            </td>
                            <td style="vertical-align:middle;" class="text-center">
                                @Html.DisplayFor(modelItem => item.Russian)
                            </td>
                            <td style="vertical-align:middle;" class="text-center">
                                @Html.DisplayFor(modelItem => item.Armenian)
                            </td>
                            <td style="vertical-align:middle;" class="text-center">
                                @Html.DisplayFor(modelItem => item.French)
                            </td>
                            <td style="vertical-align:middle;" class="text-center">
                                @Html.DisplayFor(modelItem => item.Spanish)
                            </td>
                            <td style="vertical-align:middle;" class="text-center">
                                @Html.DisplayFor(modelItem => item.Arabic)
                            </td>
                            <td style="vertical-align:middle;" class="text-center">
                                <span style="color:white;">
                                    @Html.ActionLink("Edit", "Edit", new { id = item.Text, @style = "color:red;" })
                                    @*@Html.ActionLink("Details", "Details", new { id = item.Text })*@
                                    @Html.ActionLink("Delete", "Delete", new { id = item.Text })
                                </span>
                            </td>
                        </tr>

                    }
                        }
                </table>
            </div>                                
                <br />
                Page @(Model.Item1.PageCount < Model.Item1.PageNumber ? 0 : Model.Item1.PageNumber) of @Model.Item1.PageCount

                @Html.PagedListPager(Model.Item1, page => Url.Action("Index",
new { page, sortOrder = ViewBag.CurrentSort, currentFilter = ViewBag.CurrentFilter }))
            </div>
    </div>

這是我的控制器中的代碼

public ViewResult Index(int? page)
    {
        int pageSize = 15;
        int pageNumber = (page ?? 1);

        var allModels = new Tuple<IPagedList<Translation>, List<Translation>>
            (translations.ToPagedList(pageNumber, pageSize), translations.ToList()) { };


        return View(allModels);
    }

我刪除了不必要的代碼,只剩下了用於分頁的代碼。

到目前為止,我還沒有做任何事情,因為到目前為止,我在GoogleSO中都找不到任何索引問題或文章。

感謝幫助。

如果要在創建表時放置索引,可以在表主體中像這樣循環:

<tbody>
 @{         
     int counter = 1;// Index start value
      foreach (var Item in Model.SomeList)
      {
          <tr>
           <td> @counter </td>
           </tr>
        counter++;
      }
  } 
</tbody>

當您不知道該怎么做時,請創建一個新的類:))

我在開玩笑,但這個想法仍然有效。

為什么不創建一個新類,該類將代表您的“ ViewModel”,該類將具有確切的EF模型和一個額外的Index屬性,可用於綁定到視圖中的索引?

從控制器傳遞到視圖的是新的ViewModel類。

注意:

如果您想花哨的話,可以去以下地方:ObservableCollection http://msdn.microsoft.com/zh-cn/library/ms668604(v=vs.110).aspx ,它源自INotifyPropertyChanged

基本上,這意味着您可以使用一個事件,當列表已更改(添加,刪除)時可以觸發該事件,該事件將用於更新索引。

只需將action方法中的開始行索引設置為ViewBag

int pageSize = 15;
int pageNumber = (page ?? 1);
ViewBag.StartRowIndex = ((pageNumber - 1) * pageSize) + 1;

然后在視圖中使用它。

@{
   var rowIndex = (int)ViewBag.StartRowIndex;
}
foreach (var item in Model.Item1)
{
    <tr class="clickableRow">
        <td style="vertical-align:middle; font-size:medium;font-style:italic;" class="text-center">
            @(rowIndex++) //@ViewBag.IndexOfRow.ToInt32
        </td>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM