Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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
Asp.net mvc 你能不能只更新一个局部视图而不是整页文章?_Asp.net Mvc_Jquery_Knockout.js_Partial Views - Fatal编程技术网

Asp.net mvc 你能不能只更新一个局部视图而不是整页文章?

Asp.net mvc 你能不能只更新一个局部视图而不是整页文章?,asp.net-mvc,jquery,knockout.js,partial-views,Asp.net Mvc,Jquery,Knockout.js,Partial Views,是否有一种方法可以在asp.net mvc中提交部分视图表单而不重新加载父页面,但只将部分视图重新加载到其新状态?类似于knockout.js如何使用数据绑定进行更新 我的数据表以可变的列数/名称呈现,因此我不认为knockout.js是此表的一个选项,因此我尝试使用局部视图来代替。没有jQuery是不行的 您需要做的是将您的部分放入div中,类似于: <div id="partial"> @Html.Partial("YourPartial") </div>

是否有一种方法可以在asp.net mvc中提交部分视图表单而不重新加载父页面,但只将部分视图重新加载到其新状态?类似于knockout.js如何使用数据绑定进行更新

我的数据表以可变的列数/名称呈现,因此我不认为knockout.js是此表的一个选项,因此我尝试使用局部视图来代替。

没有jQuery是不行的

您需要做的是将您的部分放入div中,类似于:

<div id="partial">
    @Html.Partial("YourPartial")
</div>
public ActionResult GetData(YourModel model) //that's if you need the model
{
    //do whatever

    return View(model);
}
然后,您的操作将类似于:

<div id="partial">
    @Html.Partial("YourPartial")
</div>
public ActionResult GetData(YourModel model) //that's if you need the model
{
    //do whatever

    return View(model);
}

实际上,如果您的Partial有一个子动作方法,那么您可以直接发布(甚至使用锚定链接)到子动作并获得类似Ajax的效果。我们在几个视图中执行此操作

语法是

@Html.Action("MyPartial")
儿童行动是

public ActionResult MyPartial()
{
    return PartialView(Model);
}
如果您的表单发布到子操作

@using (Html.BeginForm("MyPartial"))
{
    ...
}
局部视图将使用从子操作返回的局部视图进行更新


Jquery仍然是更新部分内容的合法方法。但从技术上讲,您的问题的答案是肯定的。

我将使用Ajax表单帮助程序,使用局部视图和@html.RenderPartial(“partialName”)来处理此类场景

通常,我在查找此类信息时发现,人们提供的信息太有限,因此我将尝试在这里提供帮助。关键是设置一个div,其中的ID可以附加返回html。此外,当点击控制器时,确保它返回部分。这种方法存在一些潜在的问题,但如果天气好的话,它应该会起作用

<div id="CategoryList" class="widget">
    @{
        Html.RenderPartial("WidgetCategories.cshtml");
    }
</div>

          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");
        }
    }

@{
RenderPartial(“WidgetCategories.cshtml”);
}
函数DeleteCategory(CategoryID){
$.get('/Dashboard/DeleteWidgetCategory?CategoryID='+CategoryID,
功能(数据){
如果(数据=“否”){
警报('类别已分配报告小部件,无法删除');
}
否则{
$('#CategoryList').html(数据);
}
}
);
}
[HttpGet(“DeleteWidgetCategory”)]
[HttpPost(“DeleteWidgetCategory”)]
公共IActionResult DeleteWidgetCategory(字符串类别ID)
{
删除的字符串=CategoryModel.DeleteCategory(CategoryID);
如果(已删除=“是”)
{
返回部分视图(“WidgetCategories”);
}
其他的
{
返回此.Json(“否”);
}
}
在主视图中

<div id=SearchResult>
   @Html.Partial("_NameOfPartialView", Model)
</div>

<input type="button" id="btnSubmit" value="Submit">
在你的家庭控制器

public ActionResult GetEmployee(int Id)
{
   var employee= context.Employee.Where(x=> x.EmployeeId == Id)

   return this.PartialView("_NameOfPartialView", employee);
}

试一下这个。戴夫,你能详细介绍一下它是怎么工作的吗?我本以为这会导致从已发布表单返回的部分视图显示为新页面,而不是就地更新。@johnyhk,我也本以为如此。令人惊讶的是,这会导致局部视图返回到父视图而不是父视图。这看起来很简单,只是我不明白:)MVC5
Html.BeginForm(“string”)
中的@Html.Action(“MyPartial”)在哪里调用扩展重载
BeginForm(这个HtmlHelper HtmlHelper,对象routeValues)
,并导致。我觉得这个答案“有效”是无意的行为。这是一个很好的解决方案,适合那些了解web开发但不了解c#mvc的人。@MurWade对不起,我不明白为什么这个解决方案不适用于使用mvc&c的人??你能详细说明一下吗?@JoeyBob这适用于任何使用MVC&C的人。你可以用多种方式做一件事,对于那些做过web开发者(单页应用程序、ajax等)而不是mvc的人来说,这种方式似乎是最容易理解的方法。有了mvc#您也可以使用更新面板,但这并不是这么简单。