2010-10-29 50 views
3

我是ASP.NET MVC中的新成员,因此问题可能会显示为“愚蠢”,对不起。部分ASP.NET MVC查看提交

我在我的主视图中有一个局部视图。

部分视图提交调用HomeController中的Action方法的表单。

它与服务器验证正常工作,问题是后只呈现部分视图。

如何在post之后渲染整个Home视图?

关于代码:

里面PartialView我有一个表格:

<% using (Html.BeginForm("Request", "Home")) { %> 

的要求就是我的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 

我要的是展示里面显示服务器验证错误的ASCX整个主视图。

+1

使用asp.net-MVC标签为 'MVC' 是一个普遍的标签。 – Stefanvds 2010-10-29 09:37:00

+0

你的标签很好。你只需编辑你的问题,并添加一些细节和一点源代码 – 2010-10-29 09:40:18

回答

2

更改返回类型也:

[HttpPost] 
public PartialViewResult Request(RequestModel model) 
{ 
    if (ModelState.IsValid) 
    { 
    // Saving data ..... 
    } 
    else 
    { 
    // Show Server Validation Errors 
    return PartialView(); 
    } 
} 
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> 
2

我在代码中面临同样的问题,所以我只是在我的代码中做了一个小的修改,它工作。 而不是返回同样的看法,我用

return Redirect(Request.Referrer) 

早些时候:

return View();