如何在其视图中仅刷新局部视图?
How can I refresh just a Partial View in its View?
我做错了什么伙计们?这就是想法...
索引视图
<div class="col-lg-12 col-md-12 col-xs-12">
@Html.Partial("PartialView", Model)
</div>
控制器
public ActionResult PartialView()
{
return PartialView("PartialView");
}
[HttpPost, ValidateInput(false)]
public ActionResult POSTPartialView(string param1)
{
return PartialView("PartialView");
}
PartialView 有一个表单。
我第一次进入 Index 时,PartialView 工作,但第二次,在 POST 调用(来自 PartialView 内部的表单)之后,我只需要从 Index 中渲染 PartialView。
所以要修复它,我将进行下一步:
[HttpPost, ValidateInput(false)]
public ActionResult POSTPartialView(string param1)
{
return View("Index");
}
行得通。我再次渲染所有索引(根据我的更改,在 POST 之后)。但是我刷新了所有页面,所以我丢失了一些 CSS 元素(例如折叠的手风琴)。
我是否应该使用 Ajax 来仅刷新包含 PartialView 的 div?
谢谢朋友们。
已编辑:
@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>
}
分部视图旨在在不同的视图中重用部分代码,但是当您提交表单时,整个视图都会重新加载。
如果您不想重新加载,您必须使用 AJAX 提交表单。
部分视图是为了在不同的地方重用代码的某些部分。当一个页面被提交然后视图被重新加载如果你想避免页面刷新,你可以使用 ajax.
视图代码
$.ajax({
type: "POST",
url: '@Url.Action("ControllerName", "ActionName")',
contentType: "application/json; charset=utf-8",
data: { data: "yourdata" },
dataType: "json",
success: function(recData) { alert('Success'); },
error: function() { alert('A error'); }
});
控制器代码
public JsonResult ActionName(string yourdata)
{
return Json(p); \ where p is you want to return
}
好吧,我阅读了解决方案 (Auto Refresh Partial View)。我发布它,希望澄清问题:
index.html
<div class="col-lg-12 col-md-12 col-xs-12" id="divPartial">
@Html.Partial("PartialView", Model)
</div>
<script type="text/javascript">
$("#buttonForm").click(function(e){
$('#form').submit();
$('#divPartial').load('/PartialController/PartialView');
});
</script>
部分控制器
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();
}
我做错了什么伙计们?这就是想法...
索引视图
<div class="col-lg-12 col-md-12 col-xs-12">
@Html.Partial("PartialView", Model)
</div>
控制器
public ActionResult PartialView()
{
return PartialView("PartialView");
}
[HttpPost, ValidateInput(false)]
public ActionResult POSTPartialView(string param1)
{
return PartialView("PartialView");
}
PartialView 有一个表单。 我第一次进入 Index 时,PartialView 工作,但第二次,在 POST 调用(来自 PartialView 内部的表单)之后,我只需要从 Index 中渲染 PartialView。
所以要修复它,我将进行下一步:
[HttpPost, ValidateInput(false)]
public ActionResult POSTPartialView(string param1)
{
return View("Index");
}
行得通。我再次渲染所有索引(根据我的更改,在 POST 之后)。但是我刷新了所有页面,所以我丢失了一些 CSS 元素(例如折叠的手风琴)。
我是否应该使用 Ajax 来仅刷新包含 PartialView 的 div?
谢谢朋友们。
已编辑:
@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>
}
分部视图旨在在不同的视图中重用部分代码,但是当您提交表单时,整个视图都会重新加载。
如果您不想重新加载,您必须使用 AJAX 提交表单。
部分视图是为了在不同的地方重用代码的某些部分。当一个页面被提交然后视图被重新加载如果你想避免页面刷新,你可以使用 ajax.
视图代码
$.ajax({
type: "POST",
url: '@Url.Action("ControllerName", "ActionName")',
contentType: "application/json; charset=utf-8",
data: { data: "yourdata" },
dataType: "json",
success: function(recData) { alert('Success'); },
error: function() { alert('A error'); }
});
控制器代码
public JsonResult ActionName(string yourdata)
{
return Json(p); \ where p is you want to return
}
好吧,我阅读了解决方案 (Auto Refresh Partial View)。我发布它,希望澄清问题:
index.html
<div class="col-lg-12 col-md-12 col-xs-12" id="divPartial">
@Html.Partial("PartialView", Model)
</div>
<script type="text/javascript">
$("#buttonForm").click(function(e){
$('#form').submit();
$('#divPartial').load('/PartialController/PartialView');
});
</script>
部分控制器
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();
}