[英]ASP.NET MVC multiple parameters and models
說明 :我有一個模型WorkOrder
包含WorkOrderForm
模型( start_date, end_date, organization
),模型列表(實際訂單)和頁面參數( page, page_size, page_count
)。 主要思想是顯示工作訂單,由於有很多工作訂單,因此我必須過濾數據。 工作訂單從數據庫服務器(不是本地服務器)中提取。 在最初的View我提示輸入start_date
和end_date
,我使用DataType.Date
,對於organization
我使用string
,此信息存儲在模型中,然后傳遞給HttpPost
。 它提取數據並顯示它。 現在,因為有很多訂單,所以我制作了服裝頁面來對數據進行排序,並使用了兩個變量page
和page_size
,它們在提交有效的WorkOrderForm
之后可以在視圖上顯示和設置。
問題 :我現在面臨的問題是我似乎無法將2參數page
和page_size
從視圖同時傳遞回控制器。 他們兩人的工作,但似乎重置對方,例如:我在page
4,設置page_size
從20到50,並重置page
為1,這一個是好的,但主要的是,當我選擇了一個page
,它將page_size
重置為默認值(20)。 所有提交都必須在Html.BeginForm()內部進行,否則我將丟失存儲在模型中的信息。
編輯:現在使用PagedList。
新問題 :當我選擇一個頁面時,它會調用[httpget]
,從而重置模型和頁面大小。 我試圖在索引中實現所有功能,但失敗了。
工作指示:
public class WorkOrder
{
[Key]
public int Id { get; set; }
public IPagedList<mymodel> view_list { get; set; }
public WorkOrderForm work_form { get; set; }
}
控制器:
[HttpGet]
public ActionResult Index(WorkOrder model)
{
var list = new List<mymodel>();
model.view_list = list.ToPagedList(1,1);
return View(model);
}
[HttpPost]
public ActionResult Index(WorkOrder model, int? page, int? page_size, string start_date, string end_date, string org)
{
var list = new List<mymodel>();
if (ModelState.IsValid)
{
using (OracleDbctx ctx = new OracleDbctx())
{
//database stuff
int pageNumber = (page ?? 1);
int pageSize = (page_size ?? 20);
model.view_list = list.ToPagedList(pageNumber, pageSize);
return View(model);
}
}
ModelState.AddModelError("", "Incorrect Information submitted");
return View();
}
我認為頁面信息提交:
@:Page @(Model.view_list.PageCount < Model.view_list.PageNumber ? 0 : Model.view_list.PageNumber) of @Model.view_list.PageCount
@Html.PagedListPager(Model.view_list, page => Url.Action("Index", "WorkOrder",
new { page, ViewBag.page_size, start_date = Model.work_form.start_date, end_date = Model.work_form.end_date, org = Model.work_form.org }));
問題 :即使我只選擇更新1個參數,我如何繼續從視圖傳遞兩個參數並同時保留我的模型信息? 如果您對可能的解決方法有任何建議,我很樂意聽到一些想法,甚至向我指出方向也將不勝感激。 如果可能有我想念的東西,請說。
新問題 :如何以太獲取PagedList來調用[httppost]索引,或者什么是在默認Index控制器中實現類似內容的最佳方法?
在財務主任中實施索引后
public ActionResult Index(WorkOrder model, int? page, int? page_size, string start_date, string end_date, string org)
{
if (model.work_form == null)
{
if (start_date != null && end_date != null && org != null)
{
var form = new WorkOrderForm
{
start_date = start_date,
end_date = end_date,
org = org
};
model.work_form = form;
}
}
if (model.work_form != null)
{
using (OracleDbctx ctx = new OracleDbctx())
{
//do database stuff
//var list = database(query).ToList()
int pageNumber = (page ?? 1);
int pageSize = (page_size ?? 20);
int count = list.Count;
if (pageNumber - 1 > count / page_size)
{
pageNumber = 1;
}
model.view_list = list.ToPagedList(pageNumber, pageSize);
return View(model);
}
}
return View();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.