提交PartialView

时间:2010-08-28 23:46:36

标签: asp.net-mvc-2

我有一个母版页,呈现以下PartialView:

<% Html.RenderPartial("AddPage); %>

AddPage Controller如下所示:

public class PagController : Controller
{
    [HttpGet]
    public PartialViewResult AddPage()
    {
        return PartialView();
    }

    [HttpPost]
    public PartialViewResult AddPage(FormCollection forms)
    {
        //some logic here
        // some view data here

        return PartialView();
    }
}

视图如下:

<% using (Html.BeginForm("AddPage", "Page", FormMethod.Post, new { ID = "PageManager" })){%>
<%= Html.TextBox("txtAddPage") %>
<input type="submit" value="AddPage" />
<%} %>

我的问题是,当我点击提交时,我会重定向到:http://localhost:1234/Page/AddPage,而我只想提交部分视图,并在需要时返回一些基本视图数据,并保持相同页。

我在这里度过了金发时光吗?因为我知道我之前已经这样做了

编辑 - 此部分视图以多个页面呈现,而不仅仅是一个。

2 个答案:

答案 0 :(得分:0)

如果您想提交并仅重新加载部分页面,则需要使用AJAX。执行此操作的最基本方法是在UpdatePanel

中呈现部分视图

答案 1 :(得分:0)

全页回发解决方案

这有点棘手,因为你必须知道回去哪里。我建议你改变你的视图并添加两个额外的隐藏字段(或者一个并解析它的值 - 如你所愿)并将当前控制器/动作值存储在其中。

然后,您可以在POST操作中使用此数据返回RedirectResult,如:

return RedirectToAction("action_from_field", "controller_from_field");

Ajax回发解决方案

您始终可以使用Ajax提交数据,在这种情况下,您的回发网址可以是您想要的任何内容。在您的情况下,它应该是当前页面URL。 编辑:在您的特定情况下,Ajax将是首选解决方案。