我有一个局部视图的页面,其中包含带有Add按钮的DevEx ComboBox和DevEx GridView(我省略了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,但响应仅显示该部分视图。以下是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的局部视图,也许我上面写的东西?所以这里的主要问题是我得到的新页面只显示了部分视图。
答案 0 :(得分:0)
要刷新部分页面,您需要使用ajax来仅替换所需内容。您还需要使用JavaScript重新呈现部分中包含的HTML。 MVC附带了一些ajax助手,或者你可以用jquery自己做。目前,操作结果是按要求返回部分,但浏览器被告知它正在接收一个全新的页面并且正在显示。
添加此link to Microsoft ajax以显示您的一些选项。
我会使用jquery并自己做。还要记住,mvc是一个服务器端框架,可以帮助您将http消息返回给浏览器。你试图操纵客户端的东西。实时客户端更新始终需要ajax来获取数据。替换DOM中的项目需要某种形式的JavaScript。像jquery这样的库使这变得容易多了。看看jquery ajax here。
答案 1 :(得分:0)
我认为您需要尝试此代码。 请注意,我们需要保持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
}
这不是完整的代码。但我认为这会对你有所帮助