【发布时间】:2014-10-10 12:22:21
【问题描述】:
我是一名学生,也是 ASP.NET 编程的新手。我正在使用 Razor MVC 视图引擎。我想使用两个日期时间参数(startDate 和 endDate)在一页(Index.cshtml)中显示一些部分视图,并使用一个按钮作为触发器。 但我不知道如何将参数传递给控制器,然后使用 startDate 和 endDate 之间的信息重新加载页面。
Index.cshtml(更新)
@model LoginProject.Models.Date
@{
ViewBag.Title = "Welcome Maestro";
}
<!-- Bootstrap CSS and bootstrap datepicker CSS used for styling the demo pages-->
<link rel="stylesheet" href="~/Content/themes/css/datepicker.css">
<link rel="stylesheet" href="~/Content/themes/css/bootstrap.css">
<div class="well">
<table class="table">
<thead>
<tr>
<div id="result"></div>
@using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "result", HttpMethod = "POST", InsertionMode = InsertionMode.Replace }))
{
<th>@Html.EditorFor(Model => Model.start)</th>
<th>@Html.EditorFor(Model => Model.end)</th>
<td><input type="submit" value="Cek" class="btn btn-primary" id="sub" /></td>
}
</tr>
</thead>
</table>
</div>
<!-- Load jQuery and bootstrap datepicker scripts -->
<script src="~/Scripts/js/jquery-1.9.1.min.js"></script>
<script src="~/Scripts/js/bootstrap-datepicker.js"></script>
<script>
$(function () {
// disabling dates
var nowTemp = new Date();
var now = new Date(nowTemp.getFullYear(), nowTemp.getMonth(), nowTemp.getDate(), 0, 0, 0, 0);
var st = $('#start').datepicker({
onRender: function (date) {
return date.valueOf();
}
}).on('changeDate', function (ev) {
if (ev.date.valueOf() > en.date.valueOf()) {
var newDate = new Date(ev.date)
newDate.setDate(newDate.getDate() + 1);
en.setValue(newDate);
}
st.hide();
$('#end')[0].focus();
}).data('datepicker');
var en = $('#end').datepicker({
onRender: function (date) {
return date.valueOf() <= st.date.valueOf()
;
}
}).on('changeDate', function (ev) {
en.hide();
}).data('datepicker');
});
</script>
@{Html.RenderAction("baruLama", "Home");}
@{Html.RenderAction("kunjunganPoli", "Home");}
HomeController.cs:
using LoginProject.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace LoginProject.Controllers
{
public class HomeController : Controller
{
private rsudwEntities5 db = new rsudwEntities5();
public ActionResult Index()
{
return View();
}
public ActionResult baruLama(Date date)
{
if (date.start != null && date.end != null)
{
return PartialView("_totalKunjunganGender", db.getTotalKunjunganGender(date.start, date.end).ToList());
}
else
{
var today = DateTime.Today;
var month = new DateTime(today.Year, today.Month, 1);
var first = month.AddMonths(-1);
var last = month.AddDays(-1);
return PartialView("_totalKunjunganGender", db.getTotalKunjunganGender(first, last).ToList());
}
}
public ActionResult kunjunganPoli(Date date)
{
if (date.start != null && date.end != null)
{
return PartialView("_totalKunjunganPoli", db.getKunjunganPoli(date.start, date.end).ToList());
}
else
{
var today = DateTime.Today;
var month = new DateTime(today.Year, today.Month, 1);
var first = month.AddMonths(-1);
var last = month.AddDays(-1);
return PartialView("_totalKunjunganPoli", db.getKunjunganPoli(first, last).ToList());
}
}
}
}
Date.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace LoginProject.Models
{
public class Date
{
public DateTime start = DateTime.Parse("01/08/2014"); //set default to 1 august 2014
public DateTime end = DateTime.Parse("01/09/2014"); //set default to 1 september 2014
public DateTime m {
get { return start; }
set { start = value; }
}
public DateTime s {
get { return end; }
set { end = value; }
}
}
}
要达到这个目的我应该怎么做?
我应该使用 Ajax 吗?
还是 Html.BeginForm?
但我不能用它们来渲染多个局部视图。
【问题讨论】:
-
在 asp.net mvc 中使用 AjaxForm 只需 google Ajax.BeginForm
-
@Ehsan Sajjad,我应该把@Html.RenderAction 放在哪里?页面已重新加载,但无效。抱歉问的太多了。
-
在您的问题中显示更新后的代码
-
@Ehsan Sajjad,好的。请查看 Index.cshtml
标签: c# asp.net-mvc-4 parameter-passing partial-views