没有 AJAX 的 MVC .NET 刷新(更新)局部视图
MVC .NET Refresh (Update) PartialView witout AJAX
我有一个局部视图页面,其中包含带有添加按钮的 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>
我在我的控制器上执行了操作,在数据库中添加了选定的应用程序,并且 returns 具有相同(但已刷新)模型的 PartialView,但响应仅显示该部分视图。这是更新数据库后 returns 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 自己完成。目前,操作结果是 return 按要求编辑部分内容,但浏览器被告知它正在接收一个全新的页面并按此显示。
添加此 link to Microsoft ajax 以显示您的一些选项。
我会使用 jquery 并自己完成。还要记住 mvc 是一个服务器端框架,可以帮助您 return 向浏览器发送 http 消息。您正试图在客户端操纵事物。实时客户端更新总是需要 ajax 来获取数据。替换 DOM 中的项目需要某种形式的 JavaScript。 jquery 之类的库使这变得容易得多。看看 jquery ajax here.
我认为您需要尝试此代码。
注意这里我们需要保持 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
}
这不是完整的代码。但我认为它会对你有所帮助
我有一个局部视图页面,其中包含带有添加按钮的 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>
我在我的控制器上执行了操作,在数据库中添加了选定的应用程序,并且 returns 具有相同(但已刷新)模型的 PartialView,但响应仅显示该部分视图。这是更新数据库后 returns 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 自己完成。目前,操作结果是 return 按要求编辑部分内容,但浏览器被告知它正在接收一个全新的页面并按此显示。
添加此 link to Microsoft ajax 以显示您的一些选项。
我会使用 jquery 并自己完成。还要记住 mvc 是一个服务器端框架,可以帮助您 return 向浏览器发送 http 消息。您正试图在客户端操纵事物。实时客户端更新总是需要 ajax 来获取数据。替换 DOM 中的项目需要某种形式的 JavaScript。 jquery 之类的库使这变得容易得多。看看 jquery ajax here.
我认为您需要尝试此代码。 注意这里我们需要保持 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
}
这不是完整的代码。但我认为它会对你有所帮助