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