こんにちは私はセールスビジットと呼ばれる1つのビューがあります。そのビューでは、私は2つのテキストボックスを持っていますFromDateとTodate。 FromDateとTodateを選択して[OK]ボタンをクリックすると、コントローラ内のSalesVisitのアクションをポストする日付が渡されます。mvc5の同じビューでアクションの結果を取得して表示する方法は?
コントローラでは、1つの値は日付基準によって異なります。今私は、私がコントローラ内のポストアクションで計算した結果を同じビューで表示したいと思います。例えば、下の画像に示されています。私は2つのテキストボックスを持っている上の画像で
私は、日付と、2つの日付から選択し、[OK]ボタンは、それがコントローラに日付を渡すと、コントローラに、それはいくつかの値を計算する意味クリックして、再びそれをしなければならない場合結果を同じビューに渡します。 例:上記の画像では、値が2つのボックス(赤い色のボックス)を描画します。マイモデル(ダッシュボードビューモデル)
public class DashboardViewmodel
{
public List<CustomerTypeCountModel> CustomerTypesCountModels { get; set;}
public List<View_VisitorsForm> Visits { get; set; }
public CustomerTypeViewModel CustomerTypeViewModels { get; set; }
public int sizingcount { get; set; }
public int Processingcount { get; set; }
}
私のコントローラコード
public ActionResult SalesVisit()
{
return View();
}
[HttpPost]
public ActionResult GetDatesFromSalesVisit(DashboardViewmodel dvm)
{
var fromdate = Convert.ToDateTime(dvm.CustomerTypeViewModels.FromDate);
var todate = Convert.ToDateTime(dvm.CustomerTypeViewModels.ToDate);
var userID = System.Web.HttpContext.Current.Session["UserID"].ToString();
var objEmpDepUTID = db.UserRightsSettings.Where(u => u.UserID.ToString() == userID).Select(e => new
{
objemployeeID = e.EmployeeID,
objdepartmentID = e.DepartmentID,
objusertypeID = e.UserTypeID
}).FirstOrDefault();
var EmployeeID = objEmpDepUTID.objemployeeID;
var DepartmentID = objEmpDepUTID.objdepartmentID;
var UserTypeID = objEmpDepUTID.objusertypeID;
var processingdeptid = (from d in db.Departments where d.DisplayName == "Processing" select d.DepartmentID).FirstOrDefault();
var sizingdeptid = (from d in db.Departments where d.DisplayName == "Sizing" select d.DepartmentID).FirstOrDefault();
List<View_VisitorsForm> objsizingcount = new List<View_VisitorsForm>();
List<View_VisitorsForm> objprocessingcount = new List<View_VisitorsForm>();
if (DepartmentID == new Guid("47D2C992-1CB6-44AA-91CA-6AA3C338447E") &&
(UserTypeID == new Guid("106D02CC-7DC2-42BF-AC6F-D683ADDC1824") ||
(UserTypeID == new Guid("B3728982-0016-4562-BF73-E9B8B99BD501"))))
{
var sizingview_visitorsforms = db.View_VisitorsForm.Where(x => x.EmpDepID == processingdeptid && x.VisitingDate >= fromdate
&& x.VisitingDate <= todate).ToList();
var processingview_visitorsform = db.View_VisitorsForm.Where(x => x.EmpDepID == sizingdeptid && x.VisitingDate >= fromdate
&& x.VisitingDate <= todate).ToList();
objsizingcount = sizingview_visitorsforms;
objprocessingcount = processingview_visitorsform;
}
DashboardViewmodel obj = new DashboardViewmodel();
obj.sizingcount = objsizingcount.Count();
obj.Processingcount = objprocessingcount.Count();
return View("SalesVisit", obj);
}
マイビューコード
@model CostToWafe.Areas.Sales.Models.DashboardViewmodel
@using CostToWafe.Areas.Sales.Models
@{
ViewBag.Title = "SalesVisit";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@using (Html.BeginForm("GetDatesFromSalesVisit","AdminDashboard"))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<body>
<div class="col-sm-3">
<div class="form-group">
@Html.Label("From Date")
@Html.TextBoxFor(m => m.CustomerTypeViewModels.FromDate, new { @class = "form-control", id = "FromDate" })
</div>
</div>
<div class="col-sm-3">
<div class="form-group">
@Html.Label("To Date")
@Html.TextBoxFor(m => m.CustomerTypeViewModels.ToDate, new { @class = "form-control", id = "ToDate" })
</div>
</div>
私はパーシャルビューを試しましたが、オブジェクトのインスタンスにエラーが設定されていないオブジェクト参照が表示されています。私は私の問題を理解するのに最善の努力をしました。私の問題を理解し、この問題を解決するのに役立ちます。
ありがとうございました。
あなたが同じページに滞在したい場合は、値を投稿しa'PartialViewResult'または 'JsonResult'を返し、返された結果とDOMを更新するために、AJAXを使用しています。 –
@StephenMueckeどのような例ですか? –
ウェブには数千の例があります:) –