[英]MVC .NET Refresh (Update) PartialView witout AJAX
我有一个带有部分视图的页面,其中包含带有“添加”按钮和DevEx GridView的DevEx ComboBox(我省略了GridView代码)。 该页面使用该局部视图正确显示,只有我在刷新页面时遇到问题。
//_ProductAppsGridViewPartial
<div class="form-horizontal">
<h4>Apps</h4>
@using (Html.BeginForm("AppsGridViewPartialAddNew", "Products", new { ProductID = ViewBag.ProductID }))
{
<div class="form-group">
<h5>Add new App:</h5>
@Html.DevExpress().ComboBox(settings =>
{
//..do some settings for ComboBox - some code omitted
settings.Properties.ValueField = "ApplicationID";
settings.Properties.TextField = "Name";
}).BindList(Model.AppsNotInProduct).GetHtml()
<input type="submit" value="Add" class="btn btn-default" />
</div>
}
</div>
我对控制器执行操作,该操作将在数据库中添加选定的应用程序并返回具有相同(但已刷新)模型的PartialView,但响应仅显示该部分View。 这是Controller更新数据库后返回PartialView的操作的一部分:
public ActionResult ProductAppsGridViewPartialAddNew(int ProductID)
{
//....update DB code - WORKS FINE
..
var model = GetProductAppsPartialModel(ProductID);
ViewBag.ProductID = ProductID;
ViewBag.CanEdit = true;
return PartialView("_ProductAppsGridViewPartial", model);
}
是否可以用AJAX刷新部分视图,也许是我上面写的东西? 所以这里的主要问题是我得到的新页面仅显示部分视图。
要刷新页面的一部分,您将需要使用Ajax来仅替换所需的内容。 您还需要使用JavaScript重新呈现部分中包含的HTML。 MVC带有一些ajax助手,或者您可以使用jquery自己完成。 目前,动作结果正在按要求返回部分内容,但浏览器被告知正在接收一个新页面并以此方式显示。
将此链接添加到Microsoft ajax以显示一些选项。
我会用jquery自己做。 还要记住,mvc是服务器端框架,可帮助您将http消息返回到浏览器。 您正在尝试在客户端进行操作。 实时客户端更新始终需要ajax来获取数据。 替换DOM中的项目需要某种形式的JavaScript。 像jquery这样的库使此操作变得容易得多。 在这里看看jquery ajax。
我认为您需要尝试此代码。 注意这里我们需要保持ajax调用来更新局部视图
@using (Ajax.BeginForm("ActionName", "Controller", new { model = @Model.ID },
new AjaxOptions
{
OnSuccess = "onSuccessRefresh "
}))
{
<table>
<td>
</td>
<td> <input type="button" value="AddValue" /> </td>
</table>
}
使用jquery处理代码onsuccess事件:
function onSuccessRefresh {
// refersh your page or table
}
这不是完整的代码。 但我认为这对您有帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.