簡體   English   中英

獲取局部視圖以加載數據

[英]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">&times;</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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM