【问题标题】:Update ASP.NET Partial View With Ajax.BeginForm使用 Ajax.BeginForm 更新 ASP.NET 部分视图
【发布时间】:2016-11-09 22:37:09
【问题描述】:

我正在尝试使用包含在局部视图中的 ajax 表单来更新 ASP.NET MVC 中的局部视图。但是,每当提交表单时,整个页面都会更改为局部视图,而不仅仅是包含局部视图的页面部分。

我的部分视图表单:

@using (Ajax.BeginForm("Archive", "Products", new { id = note.ID }, 
    new AjaxOptions { HttpMethod = "POST", InsertionMode = InsertionMode.ReplaceWith,UpdateTargetId = @*Unique ID*@ }))
{
    @Html.AntiForgeryToken()
    <input type="submit" value="Archive" class="btn btn-default"/>
}

它调用的函数:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Archive(int ID)
{

    ProductNote model = db.ProductNotes.FirstOrDefault(x => x.ID == ID);

    model.Archived = true;
    db.SaveChanges();
    Product modelP = db.Products.FirstOrDefault(z => (z.ProductNotes.FirstOrDefault(y => y.ID == model.ID).NoteText != null));
    System.Diagnostics.Debug.WriteLine(modelP.ID.ToString() + "Test Test 123");
    System.Diagnostics.Debug.WriteLine("Test\n\n\n");
    return PartialView("_ProductNotes", modelP);

}

【问题讨论】:

  • 你实现了所有需要执行的 jquery refrences 吗?我的意思是主视图中的 jquery.ajax.unobtrusive 文件。

标签: asp.net ajax asp.net-mvc asp.net-mvc-4


【解决方案1】:

在局部视图底部添加对以下 jquery 库的引用:

<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>

【讨论】:

    【解决方案2】:

    我认为您应该尝试将您的 Patialview 放在带有 id 的 div 标签内

    <script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>
    <div id="replace-this">
            @using (Ajax.BeginForm("Archive", "Products", new { id = note.ID }, 
        new AjaxOptions { HttpMethod = "POST", InsertionMode = InsertionMode.ReplaceWith,UpdateTargetId = "replace-this" }))
    {
        @Html.AntiForgeryToken()
        <input type="submit" value="Archive" class="btn btn-default"/>
    }
    </div>
    

    【讨论】:

    • 我实际上是在调试时尝试过的,对结果没有任何影响
    • 您的视图中是否有“jquery.unobtrusive-ajax.js”脚本。另外,是否有任何元素与您的目标具有相同的 id?
    • 是与否,所有 id 都相同,并且脚本包含在视图中
    • 我从 Nuget 包安装了 Microsoft.jQuery.Unobtrusive.Ajax。然后我将 添加到我的页面。效果很好。
    猜你喜欢
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多