簡體   English   中英

ASP.NET MVC的多個參數和模型

[英]ASP.NET MVC multiple parameters and models

說明 :我有一個模型WorkOrder包含WorkOrderForm模型( start_date, end_date, organization ),模型列表(實際訂單)和頁面參數( page, page_size, page_count )。 主要思想是顯示工作訂單,由於有很多工作訂單,因此我必須過濾數據。 工作訂單從數據庫服務器(不是本地服務器)中提取。 在最初的View我提示輸入start_dateend_date ,我使用DataType.Date ,對於organization我使用string ,此信息存儲在模型中,然后傳遞給HttpPost 它提取數據並顯示它。 現在,因為有很多訂單,所以我制作了服裝頁面來對數據進行排序,並使用了兩個變量pagepage_size ,它們在提交有效的WorkOrderForm之后可以在視圖上顯示和設置。

問題 :我現在面臨的問題是我似乎無法將2參數pagepage_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.

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