【发布时间】:2017-06-13 17:40:29
【问题描述】:
当用户从下拉列表中选择一个值时,如何用新数据刷新必须为空的创建视图的部分视图?
我尝试了留言板上列出的一堆东西以及其他东西,但它只是深入到更多错误。我简直不敢相信 Web 表单中如此简单的事情在 MVC 中却很难做到。
我在 Chrome 和 IE 中都尝试过,但出现错误,所以我迷路了。对于共享文件夹中的部分视图,我有类似的东西:
<table cellpadding="1" border="1">
.... // table header
@foreach (SYSTEMX.Models.VUE_ISSUE_LIST item in ViewBag.IssuesList)
{
<tr>
<td>@item.Issue</td>
</tr>
}
</table>
创建 cshtml 文件有这个:
<div class="col-sm-6">
<div class="form-horizontal" style="display:none" id="PV_IssueList">
@{ Html.RenderAction("UpdateIssuesList"); }
</div>
</div>
Controller里面有类似这样的代码
[HttpGet]
public ActionResult UpdateIssuesList(int? VID)
{
ViewBag.IssuesList = GetIssuesList(VID);
return PartialView("UpdateIssuesList");
}
GetIssuesList(VID) 看起来与此非常相似,它位于 mvc 应用程序的控制器中
private List<VUE_ISSUE_LIST> GetIssuesList(int? VID)
{
return db.VUE_ISSUE_LIST_.Where(i => i.ID == VID).ToList();
}
我收到此错误。我不知道这里发生了什么。
未找到部分视图“UpdateIssuesList”或没有视图引擎支持搜索到的位置。搜索了以下位置: ~/Views/CONTROLLERX/UpdateIssuesList.aspx
~/Views/CONTROLLERX/UpdateIssuesList.ascx
~/Views/Shared/UpdateIssuesList.aspx
~/Views/Shared/UpdateIssuesList.ascx
~/Views/CONTROLLERX/UpdateIssuesList.cshtml
~/Views/CONTROLLERX/UpdateIssuesList.vbhtml
~/Views/Shared/UpdateIssuesList.cshtml
~/Views/Shared/UpdateIssuesList.vbhtml
一位论坛用户发布了类似的解决方案,我想这对他有用,因为他打了一个绿色的复选标记,但对我根本不起作用:
也试过这个:
也阅读了这篇文章,但它非常技术性,以至于我没有很好地理解它。
https://www.simple-talk.com/dotnet/asp-net/tips-and-tricks-about-razor-partial-views/
【问题讨论】:
-
您需要使用 ajax 来动态更新视图(正如您包含的两个链接所示)。而且错误很明显-您还没有创建视图
UpdateIssuesList.cshtml -
如果你的视图被命名为
_IssuesListPartial.cshtml,那么它需要是return View("_IssuesListPartial"); -
当然可以!该错误表示您尚未创建名称为
UpdateIssuesList.cshtml的视图 -
局部视图是一个视图(它只是没有布局)!为了响应客户端事件(例如,从下拉列表中选择一个选项),您需要 javascript,并且要更新 DOM,您需要 ajax 来调用返回部分视图的服务器方法
-
嗨@007,您应该创建一个下拉列表(DropDownListFor)而不是一个表格,其值来自您的IssueList(来自您的控制器/name_view.HttpGet)。在它的 onclick 事件中,您必须将其称为包装形式,controller/name_view (HttpPost)。您将返回模型和控件的 ViewBag,它将呈现或不呈现您的局部视图(值来自模型并从控制器返回)。这个部分必须有另一个方法(controller/name_partialview),根据你传递给它的模型(RenderAction),让你渲染你的部分
标签: javascript asp.net-mvc asp.net-mvc-4 asp.net-mvc-3 razor