如何在其视图中仅刷新部分视图?

Eli*_* MP 6 c# asp.net-mvc asp.net-mvc-partialview razor

我在做错人吗?这是主意...

索引检视

<div class="col-lg-12 col-md-12 col-xs-12">
    @Html.Partial("PartialView", Model)
</div>
Run Code Online (Sandbox Code Playgroud)

控制者

public ActionResult PartialView()
{
    return PartialView("PartialView");
}

[HttpPost, ValidateInput(false)]
public ActionResult POSTPartialView(string param1)
{
    return PartialView("PartialView");
}   
Run Code Online (Sandbox Code Playgroud)

PartialView有一个窗体。第一次输入Index时,PartialView起作用,但是第二次,在POST调用后(来自PartialView内部的表单),我只能从Index中渲染PartialView。

因此,要解决此问题,我在做下一个:

[HttpPost, ValidateInput(false)]
public ActionResult POSTPartialView(string param1)
{
    return View("Index");
}   
Run Code Online (Sandbox Code Playgroud)

这样可行。我再次渲染所有索引(在POST之后进行更改)。但是我刷新了所有页面,因此丢失了一些CSS元素(例如,折叠式折叠)。

我是否应该使用Ajax仅刷新div包含PartialView的内容?

谢谢伙伴们。

编辑:

@using (Html.BeginForm("PartialView", "Controller", FormMethod.Post, new { @class = "form-inline", role = "form" }))
{
    <div class="form-group col-lg-3 col-md-3 col-xs-3">
        <label for="DATA">DATA:</label>
        <input type="text" class="form-control pull-right" name="DATA">
    </div> 
    <button type="submit" class="btn btn-primary pull-right">Get Data</button>
}
Run Code Online (Sandbox Code Playgroud)

Eli*_* MP 9

好吧,我阅读了解决方案(自动刷新局部视图)。我正在发布它,希望澄清这个问题:

index.html

<div class="col-lg-12 col-md-12 col-xs-12" id="divPartial">
    @Html.Partial("PartialView", Model)
</div>
Run Code Online (Sandbox Code Playgroud)
<script type="text/javascript">
  $("#buttonForm").click(function(e){
    $('#form').submit();
    $('#divPartial').load('/PartialController/PartialView'); 
  });
</script>
Run Code Online (Sandbox Code Playgroud)

部分控制器

public ActionResult PartialView()
{
    // DO YOUR STUFF. 
    return PartialView("PartialView", model);
}

[HttpPost, ValidateInput(false)]
public EmptyResult POSTPartialView(string param1)
{
    // DO YOUR STUFF AFTER SUBMIT.
    return new EmptyResult();
} 
Run Code Online (Sandbox Code Playgroud)

  • 你也可以像这样向控制器发送参数: ​​$('#divPartial').load('/PartialController/PartialView?itemId=2095'); (2认同)