Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC.NET刷新(更新)不带AJAX的局部视图_C#_Ajax_Model View Controller_Asp.net Mvc Partialview - Fatal编程技术网

C# MVC.NET刷新(更新)不带AJAX的局部视图

C# MVC.NET刷新(更新)不带AJAX的局部视图,c#,ajax,model-view-controller,asp.net-mvc-partialview,C#,Ajax,Model View Controller,Asp.net Mvc Partialview,我有一个带有部分视图的页面,其中包含带有Add按钮的DevEx组合框和DevEx GridView(我省略了GridView代码)。页面在局部视图中正确显示,只有我在刷新页面时遇到问题 //_ProductAppsGridViewPartial <div class="form-horizontal"> <h4>Apps</h4> @using (Html.BeginForm("AppsGridViewPartialAddNew", "

我有一个带有部分视图的页面,其中包含带有Add按钮的DevEx组合框和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>

有没有可能在没有AJAX的情况下刷新局部视图,也许是我上面写的东西?所以这里的主要问题是,我得到的新页面只显示部分视图。

要刷新页面的一部分,您需要使用ajax只替换所需的内容。您还需要使用JavaScript来重新呈现部分文档中包含的HTML。MVC附带了一些ajax助手,或者您可以使用jquery自己完成。此时,操作结果会按请求返回部分,但浏览器会被告知它正在接收一个全新的页面并显示为该页面

添加此项以显示您的一些选项


我会使用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>
}

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

谢谢@Luthervd。所以没有ajax和JS就无法部分刷新?我认为MVC足够聪明,可以在返回部分视图时刷新部分视图区域:)。我是MVC的新手,所以我为可能愚蠢的问题道歉。请看我修改后的答案谢谢!我让它工作了!现在我有另一个问题,但这是DevEx的问题:ComboBox和Grid是部分视图的一部分,当我从CB添加一些东西时,刷新后它在Grid中,不再在CB中,这很好。但当我在DevEx网格中调用Delete-link时,它会接受一个局部视图,并在警报对话框中显示它。我想网格需要纯网格HTML来完成它的操作。。。我试图让CB和网格与生成一个局部视图同步,但没有运气…好吧,很高兴它能工作。你现在要问一个单独的问题,所以在另一个线程中提问,这样答案就不会混淆。如果这有助于解决您的问题,请随意将其标记为正确答案。我也做到了这一点(这是因为使用了DevExpress用户界面扩展)。也许我应该再发一条帖子,然后发布我的解决方案?
@using (Ajax.BeginForm("ActionName", "Controller", new { model = @Model.ID },
new AjaxOptions
{
OnSuccess = "onSuccessRefresh "
}))
{
<table>
<td>
</td>
<td>    <input type="button" value="AddValue" /> </td>
</table>
}
function onSuccessRefresh {
// refersh your page or table
}