C# 获取部分视图以加载数据
我有一个返回部分视图(模态)的控制器柱(索引柱)。此局部视图用于从模型加载数据,该模型从其各自的Get-ActionResult方法返回。它忽略了这种方法。有没有办法让它从控制器加载数据C# 获取部分视图以加载数据,c#,asp.net-mvc,model,controller,C#,Asp.net Mvc,Model,Controller,我有一个返回部分视图(模态)的控制器柱(索引柱)。此局部视图用于从模型加载数据,该模型从其各自的Get-ActionResult方法返回。它忽略了这种方法。有没有办法让它从控制器加载数据 [HttpGet] public ActionResult Index() { return View(); } [HttpPost] [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
[HttpGet]
public ActionResult Index()
{
return View();
}
[HttpPost]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public ActionResult Index(string date)
{
string[] dateSplit = date.Split(new char[] { 'T' });
DateTime objDate = Convert.ToDateTime(dateSplit[0]);
TempData["date"] = objDate;
return PartialView("~/Views/Home/Modal.cshtml");
}
这是部分视图的Get方法,当Index post返回部分视图时不会加载该方法
[HttpGet]
public ActionResult Modal()
{
var content = db.Calendars.ToList();
if(TempData["date"] != null)
{
DateTime objDate = Convert.ToDateTime(TempData["date"]);
var contentDate = db.Calendars.Where(x => x.startDate == objDate).ToList();
return PartialView(contentDate);
}
return PartialView(content);
}
以下是视图:
@model IEnumerable<webby.Models.Calendar>
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" style="padding:20.5% 15%;">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
<h4 class="modal-title" id="myModalLabel">Events on @ViewBag.Date</h4>
</div>
<div class="modal-body">
<table>
@foreach(var item in Model)
{
<tr>
<td>
@Html.DisplayFor(model => item.events)
</td>
</tr>
<tr>
<td>
@Html.DisplayFor(model => item.type)
</td>
</tr>
<tr>
<td>
@Html.DisplayFor(model => item.content)
</td>
</tr>
}
</table>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>
<script>
$('#myModal').modal();
</script>
@model IEnumerable
&时代;关
@ViewBag.Date上的事件
@foreach(模型中的var项目)
{
@DisplayFor(model=>item.events)
@DisplayFor(model=>item.type)
@DisplayFor(model=>item.content)
}
关
保存更改
$('#myModal').modal();
运行应用程序后,post返回部分视图后,部分视图将捕获空错误 返回PartialView(“~/Views/Home/Modal.cshtml”)
上面的行不会调用Modal()操作。它将尝试返回视图(cshtml)。(在本例中,您没有为视图提供模型。)
你可以通过索引(post)的最后一行实现你的目标:
(也就是说,我有点不清楚您到底想要实现什么,所以更详细的描述可能有助于获得完整的解决方案。)
另外,我不知道ScriptMethod属性是什么,但我很确定您不希望它装饰您的post操作
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
不能有模态动作。当你打电话的时候
return PartialView("~/Views/Home/Modal.cshtml");
它将简单地用你传递给它的任何东西来打开视图(正如所写的那样,这是绝对没有的)
您要做的是输入代码:
var content = db.Calendars.ToList();
if(TempData["date"] != null)
{
DateTime objDate = Convert.ToDateTime(TempData["date"]);
content = db.Calendars.Where(x => x.startDate == objDate).ToList();
}
在HttpPost索引操作中,并将模型按如下方式传递给模态:
return PartialView("~/Views/Home/Modal.cshtml", content);
return PartialView("~/Views/Home/Modal.cshtml", content);