没有AJAX的MVC .NET刷新(更新)部分视图

时间:2015-04-08 08:15:10

标签: c# ajax model-view-controller asp.net-mvc-partialview

我有一个局部视图的页面,其中包含带有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的局部视图,也许我上面写的东西?所以这里的主要问题是我得到的新页面只显示了部分视图。

2 个答案:

答案 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
}

这不是完整的代码。但我认为这会对你有所帮助