[英]Get Partial View to load Data
我有一個控制器帖子(索引POST),它返回部分視圖(模態)。 此局部視圖用於從模型加載數據,該模型是從其各自的Get ActionResult方法返回的。 它忽略此方法。 有沒有辦法使其從控制器加載數據?
[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帖子返回局部視圖時,該方法不會加載。
[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>
運行應用程序后,一旦帖子返回部分視圖,部分視圖將捕獲空錯誤。
返回PartialView(“〜/ Views / Home / Modal.cshtml”);
上面的行不會調用您的Modal()操作。 它將僅嘗試返回視圖(cshtml)。 (在這種情況下,您沒有給視圖提供模型。)
您可以通過擁有Index(發布)的最后一行來實現自己的目標:
return RedirectToAction("Modal");
(也就是說,我對您要完成的目標尚不清楚,因此,進行更詳細的描述可能有助於獲得完整的解決方案。)
另外,我不完全知道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 Index操作中,然后將模型傳遞給模式:
return PartialView("~/Views/Home/Modal.cshtml", content);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.