C# 如何从单独的部分视图模式中刷新submit主索引页上的部分视图

C# 如何从单独的部分视图模式中刷新submit主索引页上的部分视图,c#,jquery,asp.net-mvc,twitter-bootstrap,C#,Jquery,Asp.net Mvc,Twitter Bootstrap,我有一个主索引页,加载一个包含下拉列表的部分视图。从ddl中选择一个项将在单独的局部视图中填充控件以供显示。单击“编辑”将打开一个模型,该模型具有绑定到选定项的模型属性的EditorFor控件的形式。单击模式的“提交”按钮时。它将表单发回数据库进行更新……此时我希望基本上刷新包含dropdownlist的部分视图,以便它反映出适当的更改 除了刷新包含dropdownlistfor控件的部分视图外,我的代码执行了所有基本的机制。我可以对索引页面执行重定向操作并刷新整个页面,但我更愿意只刷新部分视图

我有一个主索引页,加载一个包含下拉列表的部分视图。从ddl中选择一个项将在单独的局部视图中填充控件以供显示。单击“编辑”将打开一个模型,该模型具有绑定到选定项的模型属性的EditorFor控件的形式。单击模式的“提交”按钮时。它将表单发回数据库进行更新……此时我希望基本上刷新包含dropdownlist的部分视图,以便它反映出适当的更改

除了刷新包含dropdownlistfor控件的部分视图外,我的代码执行了所有基本的机制。我可以对索引页面执行重定向操作并刷新整个页面,但我更愿意只刷新部分视图。我想不出如何做到这一点,我想知道是否有人有一个建议

索引页的代码div代码为:

@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
<br />
<div class="partialContent" data-url="/Database/GetDatabases">
       @Html.Partial("_GetDatabases")
    </div>
<br />


<div class="modal fade" id="modalEditDBInfo" role="application" aria-labelledby="modalEditDBInfoLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modalEditDBInfoContent" style="background-color:white; border-radius:10px; box-shadow:10px;">
            @Html.Partial("_EditDatabaseInfo")
        </div>
    </div>
</div>
最后是EditDatabase模式的Get和Post代码

[HttpGet]
public ActionResult EditDatabaseInfo(int database_pk)
{
    DatabaseModel databaseModel = FillDatabaseModelByDatabasePK(database_pk);
    return PartialView("_EditDatabaseInfo", databaseModel);
}
[HttpPost]
public ActionResult EditDatabaseInfo(DatabaseModel databaseModel)
{
    string[] result = databaseService.Update(new Database
    {
        database_pk = databaseModel.database_pk,
        database_name = databaseModel.database_name,
        database_password = databaseModel.database_password,
        database_username = databaseModel.database_username,
        database_server = databaseModel.database_server,
        hist_database_name = databaseModel.hist_database_name,
        hist_database_server = databaseModel.hist_database_server,
        hist_database_password = databaseModel.hist_database_password,
        hist_database_username = databaseModel.hist_database_username,
        sqlType = new SQLType { sql_type_pk = databaseModel.sql_type_pk }
    });
    return RedirectToAction("GetDatabases");
}

正如我所说,重定向操作(“索引”)在Post EditDatabase controller方法中返回的方法在紧要关头起作用。但是我真的不想刷新整个页面。我假设在该方法的返回中可以做一些不同的事情,只重新加载GetDatabases部分,但我无法理解。如果您能提供任何帮助,我们将不胜感激。

Carl who在上面评论provi但是,由于他刚刚发表了评论,我将在这里发布代码修改,因此如果有人正在寻找类似的问题,他们可以看到代码

根据Carl的建议,我使用了Ajax.BeginForm而不是HTML.BeginForm,并且我通过onsuccess处理程序更新了部分视图控制器

我在编辑数据库中替换了这一行

     using (Html.BeginForm("EditDatabaseInfo", "Database", FormMethod.Post, new { @class = "modal-form" }))
用这个

using (Ajax.BeginForm("EditDatabaseInfo", "Database", new AjaxOptions{
            InsertionMode = InsertionMode.Replace,
            HttpMethod = "POST",
            OnSuccess = "editDatabaseSuccess"        
        }, new { @id = "editDatabaseForm" }))
然后在我的脚本中,我为EditDatabaseSuccess创建了一个函数

<script type="text/javascript">
    function editDatabaseSuccess(data)
    {
        //alert(data);
        $('#modalEditDBInfo').modal('hide');
        loadDatabases();
    }
</script>

函数editDatabaseSuccess(数据)
{
//警报(数据);
$('#modalEditDBInfo').modal('hide');
loadDatabases();
}
警报(data;注释掉)行仅用于测试,以确保函数被调用。 loadDatabases();行调用我在页面加载中使用的函数来加载局部视图

<script type="text/javascript">
    function loadDatabases()
    {
        $(".partialContent").each(function (index, item) {
            var url = $(item).data("url");
            if (url && url.length > 0) {
                $(item).load(url)
            }
        });
    }
</script>

函数loadDatabases()
{
$(“.partialContent”)。每个(功能(索引,项目){
var url=$(项目).data(“url”);
如果(url&&url.length>0){
$(项)。加载(url)
}
});
}

非常感谢Carl的回答。

如果您使用Ajax.Begin表单,您可以通过onsuccess函数更新部分并关闭对话框,或者在成功处理程序中的原始Ajax请求中完成同样的操作。您的建议非常有效。非常感谢!没问题,很高兴它有帮助:)
using (Ajax.BeginForm("EditDatabaseInfo", "Database", new AjaxOptions{
            InsertionMode = InsertionMode.Replace,
            HttpMethod = "POST",
            OnSuccess = "editDatabaseSuccess"        
        }, new { @id = "editDatabaseForm" }))
<script type="text/javascript">
    function editDatabaseSuccess(data)
    {
        //alert(data);
        $('#modalEditDBInfo').modal('hide');
        loadDatabases();
    }
</script>
<script type="text/javascript">
    function loadDatabases()
    {
        $(".partialContent").each(function (index, item) {
            var url = $(item).data("url");
            if (url && url.length > 0) {
                $(item).load(url)
            }
        });
    }
</script>