Asp.net mvc 5 仅更新@Html.Partial()视图

Asp.net mvc 5 仅更新@Html.Partial()视图,asp.net-mvc-5,controller,partial-page-refresh,Asp.net Mvc 5,Controller,Partial Page Refresh,我不是在寻找javascript/jquery的答案。我能做到,但我觉得这违背了目的。这似乎是在没有javascript的情况下可以实现的 我正在尝试获取一个简单的列表框选择来更新@Html.Partial部分,但我不确定该怎么做。最初一切都很好。然而,在我提交之后,我不太确定如何“附加”到我的局部视图以更新它 这里的目的是只加载一次列表框,并允许他们查看或请求任意多的新报告,而无需重新加载。如果不可能,那很好,我可以使用一个页面,重新加载列表框,它就会工作。我只是不明白为什么每次他们查看或请求

我不是在寻找javascript/jquery的答案。我能做到,但我觉得这违背了目的。这似乎是在没有javascript的情况下可以实现的

我正在尝试获取一个简单的列表框选择来更新@Html.Partial部分,但我不确定该怎么做。最初一切都很好。然而,在我提交之后,我不太确定如何“附加”到我的局部视图以更新它

这里的目的是只加载一次列表框,并允许他们查看或请求任意多的新报告,而无需重新加载。如果不可能,那很好,我可以使用一个页面,重新加载列表框,它就会工作。我只是不明白为什么每次他们查看或请求报告时,我都需要去数据库重新加载列表框项目

“主”html页面:

@using TCTReports.Models
@model ReportViewModel
<h2>My Reports</h2>
<div class="row">
<div class="col-md-6">
    <h3>Select Report</h3>
    @using (Html.BeginForm("GetReport", "Report"))
    {
        @Html.DropDownListFor(m => m.SelectedMyID, Model.myLB)
       <input type="submit" value="View" />
    }      
</div>
<div class="col-md-6">
    <h3>All Reports</h3>
    @using (Html.BeginForm("ReqReport", "Report"))
    {
        @Html.DropDownListFor(m => m.SelectedAllID, Model.allLB)
        <input type="submit" value="View" />
    }
</div>
</div>
@Html.Partial("_Msg")

好的,那么我该如何更新_Msg并只刷新Html主页的@Html.PartialView()部分呢?我短暂地玩了@sections,但没有取得多大进展。

我只是让它暂时重新加载列表框。如果有人给我一个答案,我会重新考虑。它是有效的,我只是觉得不需要持续的数据访问。最简单的方法是将列表框的数据源保存到会话中,或者在列表框的数据源保持静态的情况下对其进行硬编码。另外,使用JavaScript重新加载列表框也没那么糟糕。结合使用Ajax和Session将使其变得简单。除非使用Ajax更新包含部分视图的元素(不清楚为什么不想这样做),否则方法需要是
ActionResult
,并返回整个视图(包括DropDownList的html),这就是我所做的。只需重新加载整个页面。
<h2>@ViewBag.Message</h2>
public void GetReport(ReportViewModel model)
    {
        var myID = model.SelectedMyID;            
        ViewBag.Message = "Report: " + myID.ToString() + " Selected.";
        //return PartialView("_Msg","Test");
    }
    public void ReqReport(ReportViewModel model)
    {
        var allID = model.SelectedAllID;
        ViewBag.Message = "Report: " + allID.ToString() + " Requested.";
        //return PartialView("_Msg", "Test");
    }