我是ASP.NET MVC的新手,所以问题可能显得“愚蠢”,抱歉。
我在主页视图中有一个部分视图。
Partial View在HomeController中提交一个调用Action Method的表单。
它适用于服务器验证,问题是在帖子后只呈现部分视图。
如何在发布后呈现整个主页视图?
关于代码:
在PartialView中我有一个表单:
<% using (Html.BeginForm("Request", "Home")) { %>
Request是我的HomeController中定义的ActionResult。
[HttpPost]
public ActionResult Request(RequestModel model)
{
if (ModelState.IsValid)
{
// Saving data .....
}
else
{
// Show Server Validation Errors
return View();
}
}
此时,在帖子之后,ascx显示服务器验证错误,但只呈现PartialView ascx代码。 在帖子之后,Url看起来像这样:
http://xxxxxxxxxxx/Home/Request
我想要的是显示整个Home视图,其中ascx显示服务器验证错误。
答案 0 :(得分:5)
尝试使用jQuery进行部分提交:
<script type="text/javascript">
$(document).ready(function () {
$("input[type=submit]").live("click", function () {
var f = $("input[type=submit]").parents("form");
var action = f.attr("action");
var serializedForm = f.serialize();
$.ajax({
type: 'POST',
url: action,
data: serializedForm,
success: function (data, textStatus, request) {
if (!data == "") {
// redisplay partial view
$("#formDiv").html(data);
}
else {
// do whatever on sucess
}
}
});
return false;
});
});
</script>
假设您的视图/ ascx / HTML是这样的:
<div id="formDiv">
<% Html.RenderAction("Request"); %>
</div>
答案 1 :(得分:2)
还要更改退货类型:
[HttpPost]
public PartialViewResult Request(RequestModel model)
{
if (ModelState.IsValid)
{
// Saving data .....
}
else
{
// Show Server Validation Errors
return PartialView();
}
}
答案 2 :(得分:2)
我在代码中遇到了同样的问题,所以我只是对我的代码进行了一些小修改并且它有效。 我使用
而不是返回相同的视图return Redirect(Request.Referrer)
早些时候:
return View();