如何在 C# MVC5 视图中渲染动作?
How to Render Action in view in C# MVC5?
我想要的是在SelectDaycshtml
页面中呈现视图页面ViewByDay.cshtml
的员工详细信息。概念是从下拉列表中选择一周中的 select 天,并在 ViewByDay
中检索与那一天相关的信息。为此,我在 SelectDay
中使用了 @Html.RenderAction("ViewByDay")
。但是我得到这个错误
Procedure or function 'ViewByDay' expects parameter '@Days', which was not supplied.
这是我的视图 类 和控制器的代码片段:
SelectDay.cshtml
@model CrudMvc.Models.EmpInfoModels
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Select Employee By Days</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.Days, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model => model.Days, (List < SelectListItem >)ViewBag.DayItems, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.Days, "", new { @class = "text-danger" })
</div>
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Select" class="btn btn-default" />
</div>
</div>
}
<div>
@{ Html.RenderAction("ViewByDay"); }
// @{ Html.RenderPartial("_ViewByDay");}
// @Html.Partial("_ViewByDay")
// @Html.ActionLink("Get All Employee Details", "GetAllEmpDetails","Employee") *@
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
ViewByDay.cshtml
@model IList<CrudMvc.Models.EmpInfoModels>
<div>
<h4>ListEmpByDays</h4>
<hr />
<table class="table">
<tr>
<th>Employee Name</th>
<th>Day</th>
<th>Destination</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>@Html.DisplayFor(modelItem => item.EmpName)</td>
<td>@Html.DisplayFor(modelItem => item.Days)</td>
<td>@Html.DisplayFor(modelItem => item.Destination)</td>
</tr>
}
</table>
</div>
<p>@Html.ActionLink("Back to List", "GetAllEmpDetails")</p>
控制器 SelectDay 和 ViewByDay
public ActionResult SelectDay()
{
var days= new List<SelectListItem>();
days.Add(new SelectListItem { Text = "Monday", Value = "Monday" });
days.Add(new SelectListItem { Text = "Tuesday", Value = "Tuesday" });
days.Add(new SelectListItem { Text = "Wednesday", Value = "Wednesday" });
days.Add(new SelectListItem { Text = "Thursday", Value = "Thursday" });
days.Add(new SelectListItem { Text = "Friday", Value = "Friday" });
ViewBag.DayItems = days;
return View();
}
[HttpPost]
public ActionResult SelectDay(string Days)
{
return RedirectToAction("ViewByDay", new {Days = Days});
}
public ActionResult ViewByDay(string days)
{
EmpRepository EmpRepo = new EmpRepository();
ModelState.Clear();
var emps = EmpRepo.ViewByDay(days);
return View(emps);
}
您需要提供显示天数作为参数
@Html.Action("ViewByDays", "Controllername", new {days="5"})
可能参数天数应该是一个整数。
您已经在方法 SelectDay 中正确调用了它
[HttpPost]
public ActionResult SelectDay(string Days)
{
return RedirectToAction("ViewByDay", new {Days = Days});
}
我想要的是在SelectDaycshtml
页面中呈现视图页面ViewByDay.cshtml
的员工详细信息。概念是从下拉列表中选择一周中的 select 天,并在 ViewByDay
中检索与那一天相关的信息。为此,我在 SelectDay
中使用了 @Html.RenderAction("ViewByDay")
。但是我得到这个错误
Procedure or function 'ViewByDay' expects parameter '@Days', which was not supplied.
这是我的视图 类 和控制器的代码片段:
SelectDay.cshtml
@model CrudMvc.Models.EmpInfoModels
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Select Employee By Days</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.Days, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model => model.Days, (List < SelectListItem >)ViewBag.DayItems, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.Days, "", new { @class = "text-danger" })
</div>
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Select" class="btn btn-default" />
</div>
</div>
}
<div>
@{ Html.RenderAction("ViewByDay"); }
// @{ Html.RenderPartial("_ViewByDay");}
// @Html.Partial("_ViewByDay")
// @Html.ActionLink("Get All Employee Details", "GetAllEmpDetails","Employee") *@
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
ViewByDay.cshtml
@model IList<CrudMvc.Models.EmpInfoModels>
<div>
<h4>ListEmpByDays</h4>
<hr />
<table class="table">
<tr>
<th>Employee Name</th>
<th>Day</th>
<th>Destination</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>@Html.DisplayFor(modelItem => item.EmpName)</td>
<td>@Html.DisplayFor(modelItem => item.Days)</td>
<td>@Html.DisplayFor(modelItem => item.Destination)</td>
</tr>
}
</table>
</div>
<p>@Html.ActionLink("Back to List", "GetAllEmpDetails")</p>
控制器 SelectDay 和 ViewByDay
public ActionResult SelectDay()
{
var days= new List<SelectListItem>();
days.Add(new SelectListItem { Text = "Monday", Value = "Monday" });
days.Add(new SelectListItem { Text = "Tuesday", Value = "Tuesday" });
days.Add(new SelectListItem { Text = "Wednesday", Value = "Wednesday" });
days.Add(new SelectListItem { Text = "Thursday", Value = "Thursday" });
days.Add(new SelectListItem { Text = "Friday", Value = "Friday" });
ViewBag.DayItems = days;
return View();
}
[HttpPost]
public ActionResult SelectDay(string Days)
{
return RedirectToAction("ViewByDay", new {Days = Days});
}
public ActionResult ViewByDay(string days)
{
EmpRepository EmpRepo = new EmpRepository();
ModelState.Clear();
var emps = EmpRepo.ViewByDay(days);
return View(emps);
}
您需要提供显示天数作为参数
@Html.Action("ViewByDays", "Controllername", new {days="5"})
可能参数天数应该是一个整数。
您已经在方法 SelectDay 中正确调用了它
[HttpPost]
public ActionResult SelectDay(string Days)
{
return RedirectToAction("ViewByDay", new {Days = Days});
}