を定義し、私はMVC3を学び始めるが、私は、WebGridの上でいくつかの問題を抱えている、ASP.NET MVC 3のWebGridは、ページングを保存し、ルート
[コントローラ名がTestControllerあるので、私はに移動します。 http://localhost:53503/Test/
とのWebGridは以下の通り:
2カラム:IDと名前。 第3 &第4列:Actionlinkおよびitem.GetSelectLink。
最初の問題は次のとおりです。私はwebgridのページ3を見て、ActionLinkを押して、TestContollerのアクションを考えた後、WebBackがPostBackの後のページ1に戻ります。しかし
、私は右端の[表示(GetSelectLink)]を押すと:
(例えばhttp://localhost:53503/Test/?gridItems_page=3&gridItems_selectedRow=3
それが動作
だから、私は削除/一般的な追加/更新のためにActionLinkのかGetSelectLinkを使用する必要があります。操作
MVC3は/ビューステート状態を制御するので、どのように私はポストバック後に、現在のページの選択を保存することができていない
第二の問題は、次のとおりです。?? ActionLinkのの(HREF)は次のとおりです。
http://localhost:53503/Test/GetSelection/7?Name=PSP
私はそれは私がGlobal.asaxのための新しいルートを追加し、それは運ではありません
http://localhost:53503/Test/GetSelection/7/PSP
になるだろう。
ありがとうございました。
ビュー/テスト/ Index.cshtml
@model List<MvcContract.Controllers.Products>
@{
System.Web.Helpers.WebGrid grid = new System.Web.Helpers.WebGrid(
source: Model,
canPage: true,
rowsPerPage: 3,
fieldNamePrefix: "gridItems_",
pageFieldName: "page",
selectionFieldName: "selectedRow"
);
}
@{
if (Model != null)
{
@grid.GetHtml(
columns: grid.Columns(
grid.Column("ID"),
grid.Column("Name"),
grid.Column(format: (item) => Html.ActionLink("View(ActionLink)", "GetSelection", new { ID = item.ID, Name = item.Name })),
grid.Column(format: (item) => item.GetSelectLink("View(GetSelectLink)"))
)
);
}
}
コントローラ/ TestController.csグローバルで
namespace MvcContract.Controllers
{
public class Products
{
public string ID { get; set; }
public string Name { get; set; }
public List<Products> GetItems()
{
List<Products> items = new List<Products>();
items.Add(new Products() { ID = "1", Name = "PS3" });
items.Add(new Products() { ID = "2", Name = "XBox360" });
items.Add(new Products() { ID = "3", Name = "Wii" });
items.Add(new Products() { ID = "4", Name = "Saturn" });
items.Add(new Products() { ID = "5", Name = "Dreamcast" });
items.Add(new Products() { ID = "6", Name = "NDS" });
items.Add(new Products() { ID = "7", Name = "PSP" });
items.Add(new Products() { ID = "8", Name = "NeoGeo" });
items.Add(new Products() { ID = "9", Name = "3DO" });
items.Add(new Products() { ID = "10", Name = "Playdia" });
return items;
}
}
public class TestController : Controller
{
//Bind data to WebGrid
public ActionResult Index()
{
Products products = new Products();
return View(products.GetItems());
}
//Some Logic
public ActionResult GetSelection(string ID, string Name)
{
string SelectedID = ID;
return RedirectToAction("Index");
}
}
}
RegisterRoutes():
それは私のコードです。 asax.cs
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"Test_GetSelection", // Route name
"{controller}/{action}/{id}/{name}", // URL with parameters
new { controller = "Test", action = "GetSelection", id = UrlParameter.Optional, name = UrlParameter.Optional } // Parameter defaults
);
}