你可以只更新部分视图而不是整个页面提交吗?

17 浏览
0 Comments

你可以只更新部分视图而不是整个页面提交吗?

在ASP.NET MVC中,有没有一种方法可以在不重新加载父页面的情况下提交一个部分视图表单,而只重新加载部分视图以达到新的状态?类似于knockout.js使用data-bind进行更新的方式。

由于我的数据表以可变数量的列/名称呈现,因此我认为knockout.js不适用于这个问题,所以我尝试使用部分视图。

0
0 Comments

问题的原因是用户想知道是否可以只更新部分视图而不是整个页面。解决方法是使用子操作方法来处理部分视图的更新。代码示例中展示了如何使用子操作方法来更新部分视图。通过将表单的提交指向子操作方法,可以实现部分视图的更新。这种方法类似于Ajax调用,通过返回的部分视图来更新原始视图。此外,JQuery也是更新部分视图的有效方式。

在MVC5中,使用Html.BeginForm("string")会调用扩展的重载方法BeginForm(this HtmlHelper htmlHelper, object routeValues),并导致一个POST /?Length=N。这种行为可能是不被预期的。

在回答中提到,MVC框架已经有了很大的发展,现在已经有了更好的方法来处理部分视图的更新。作者建议使用JQuery来更新部分视图。作者还提到,自己更倾向于使用AngularJS来创建动态页面,而不是使用部分视图。最后,作者建议根据实际情况选择最合适的方法来处理部分视图的更新。

对于想要实现部分视图更新但不太了解如何操作的用户,作者建议提供更多的细节和指导,以帮助他们实现这个功能。

0
0 Comments

在上述内容中,问题的出现原因是希望能够通过更新部分视图而不是整个页面来实现页面的更新。解决方法是通过在页面中设置一个带有ID的div,并将返回的HTML附加到该div中。同时,确保在调用控制器时返回部分视图。

以下是解决方法的具体代码:

@{ Html.RenderPartial("WidgetCategories.cshtml"); }
function DeleteCategory(CategoryID) { $.get('/Dashboard/DeleteWidgetCategory?CategoryID=' + CategoryID, function (data) { if (data == "No") { alert('The Category has report widgets assigned to it and cannot be deleted.'); } else { $('#CategoryList').html(data); } } ); } [HttpGet("DeleteWidgetCategory")] [HttpPost("DeleteWidgetCategory")] public IActionResult DeleteWidgetCategory(string CategoryID) { string Deleted = CategoryModel.DeleteCategory(CategoryID); if (Deleted == "Yes") { return PartialView("WidgetCategories"); } else { return this.Json("No"); } }

通过以上代码,我们可以实现在删除类别后仅更新部分视图而不是整个页面的效果。

0
0 Comments

在这段内容中,讨论了如何在不刷新整个页面的情况下更新部分视图。这个问题的出现原因是想要在点击按钮时,通过AJAX请求获取数据,然后更新部分视图。解决方法是使用jQuery的ajax方法发送请求并将返回的结果更新到指定的div中。

首先,需要将部分视图放置在一个div中,然后使用jQuery的ajax方法发送请求,并在成功返回结果时将结果更新到div中。具体代码如下:

$("#button").click(function () {
   $.ajax({
       url: "YourController/GetData",
       type: "get",
       data: $("form").serialize(), //如果需要提交表单数据,可以使用这个方法
       success: function (result) {
           $("#partial").html(result);
       }
   });
})

然后,在控制器中的相应的操作方法中处理数据,并返回视图。具体代码如下:

public ActionResult GetData(YourModel model) //如果需要传递模型数据
{
    //处理数据
    return View(model);
}

这种方法对于了解Web开发但不熟悉C# MVC的人来说是一个很好的解决方案。对于使用MVC和C#的人来说,这种方法同样适用。可以用不同的方式来实现同一个目标,但是这种方法对于那些熟悉Web开发(单页面应用程序,Ajax等)但不熟悉C# MVC的人来说是最容易理解的方式。在MVC中,也可以使用Update Panel来实现相同的效果,但这种方法没有这种直接简单。

所以,这种解决方案适用于任何使用MVC和C#的人。

0