pagedListメソッドを使用しているため、インデックスから余分な値を渡そうとしていますが、リターンから他のいくつかのものを渡しています。インデックスリターンからvmを渡す必要があるので、次のようになります。
return View(vm);
現時点ではこのように見えます
return View(IAMP.ToPagedList(pageNumber, pageSize));
2つのテーブルを1つのビューに渡す方法をよりよく理解するために、以下にリンクされているこの質問を読んでいますが、pagedListに必要な現在の戻り値で「vm」を返す方法がわかりません。コントローラ、モデル、インデックスのコードも投稿しました。わかりやすくするためにさらにコードが必要な場合はお知らせください。
本当の問題は、インデックスに表示するバージョン番号と、別のテーブルにある他の値を取得する必要があることです。私がやろうとしていることが理にかなっていることを願っています。:)助けてくれるすべての人に賛成票を投じてくれてありがとう!
PaController
namespace DBFirstMVC.Controllers
{
public class PaController : Controller
{
PaEntities db = new PaEntities();
// Index Method
public ViewResult Index(string sortOrder, string currentFilter, string searchString, int? page)
{
PageViewModel vm = new PageViewModel();
vm.iamp_mapping = from n in db.iamp_mapping select n;
vm.version_number = from k in db.version_number select k;
ViewBag.CurrentSort = sortOrder; //ViewBag property provides the view with the current sort order
ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "PA desc" : ""; // Calls the sortOrder switch/case PA desc or default
ViewBag.MPSortParm = sortOrder == "MP" ? "MP desc" : "MP asc"; // Calls the sortOrder switch/case MP desc or MP asc
ViewBag.IASortParm = sortOrder == "IA" ? "IA desc" : "IA asc"; // Calls the sortOrder switch/case IA desc or IA asc
ViewBag.VersionSortParm = sortOrder == "VERSION" ? "Version desc" : "Version asc"; // Calls the sortOrder switch/case Version desc or Version asc
ViewBag.IAMP_PKSortParm = sortOrder == "IAMP_PK" ? "IAMP_PK desc" : "IAMP_PK asc"; // Calls the sortOrder switch/case IAMP_PK desc or IAMP_PK asc
if (Request.HttpMethod == "GET")
{
searchString = currentFilter; //sets the currentFilter equal to Searchstring
}
else
{
page = 1; // defaults to page 1
}
ViewBag.CurrentFilter = searchString; // Provides the view with the current filter string
var IAMP = from p in db.iamp_mapping select p;
var VIAMP = from x in db.version_number select x;
if (!String.IsNullOrEmpty(searchString))
{
IAMP = IAMP.Where(p => p.PA.ToUpper().Contains(searchString.ToUpper())); //selects only records that contains the search string
}
switch (sortOrder) // switch case changes based on desired sort
{
case "Pa desc":
IAMP = IAMP.OrderByDescending(p => p.PA);
break;
case "MP desc":
IAMP = IAMP.OrderByDescending(p =>p.MAJOR_PROGRAM);
break;
case "MP asc":
IAMP = IAMP.OrderBy(p =>p.MAJOR_PROGRAM);
break;
case "IA desc":
IAMP = IAMP.OrderByDescending(p => p.INVESTMENT_AREA);
break;
case "IA asc":
IAMP = IAMP.OrderBy(p => p.INVESTMENT_AREA);
break;
case "Version asc":
VIAMP = VIAMP.OrderBy(x => x.VERSION);
break;
case "Version desc":
VIAMP = VIAMP.OrderByDescending(x => x.VERSION);
break;
case "IAMP_PK asc":
IAMP = IAMP.OrderBy(p => p.IAMP_PK);
break;
case "IAMP_PK desc":
IAMP = IAMP.OrderByDescending(p => p.IAMP_PK);
break;
default:
IAMP = IAMP.OrderBy(p => p.PA);
break;
}
int pageSize = 15; // number of records shown
int pageNumber = (page ?? 1); // start page number
return View(IAMP.ToPagedList(pageNumber, pageSize)); // uses pagedList method to return correct page values
}
PaDbModel
using System;
using System.Collections.Generic;
using System.Linq;
using DBFirstMVC.Models;
namespace DbFirstMVC.Models
{
public class PageViewModel
{
public IQueryable<iamp_mapping> iamp_mapping { get; set; }
public IQueryable<version_number> version_number { get; set; }
}
}
索引
@model DBFirstMVC.Models.iamp_mapping
@{
ViewBag.Title = "Edit";
}
<h2>Edit</h2>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>iamp_mapping</legend>
<div class="editor-label">
@Html.LabelFor(model => model.PA)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.PA)
@Html.ValidationMessageFor(model => model.PA)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.MAJOR_PROGRAM)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.MAJOR_PROGRAM)
@Html.ValidationMessageFor(model => model.MAJOR_PROGRAM)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.INVESTMENT_AREA)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.INVESTMENT_AREA)
@Html.ValidationMessageFor(model => model.INVESTMENT_AREA)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.VERSION)
</div>
<div class="editor-field">
@Html.DropDownList("Version", ViewBag.Version as MultiSelectList)
@Html.ValidationMessageFor(model => model.VERSION)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.IAMP_PK)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.IAMP_PK)
@Html.ValidationMessageFor(model => model.IAMP_PK)
</div>
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "")
</div>