用于部分视图控制的单独动作方法

时间:2012-09-25 20:00:56

标签: asp.net-mvc-3 partial-views

在我的asp.net-mvc3项目中,我在页面上使用部分视图。该部分视图是可重用的,并将在几页上呈现。 部分视图具有我可以将数据放入的输入控件。页面上还有其他特定于页面的控件。部分视图位于页面表单内。当在部分视图控件和其他页面特定控件中输入的数据时,单个请求将被提交给控制器操作方法。

由于部分视图控件可重复使用,因此将在多个页面上显示。 我希望部分视图有一个操作,与页面控制器操作分开,将在提交整个表单时调用。基本上不会在每个页面控制器操作中处理数据,其中将显示部分视图。

有没有办法做到这一点?

2 个答案:

答案 0 :(得分:1)

我不确定我是否真的理解你的要求,但我认为你所寻找的概念被称为“儿童行动”。

这实质上让PartialView拥有它自己的动作方法,这意味着呈现Child Action的主视图根本不需要关注Partial View所需的模型 - 这个逻辑包含在Child Action中。 / p>

但您可能需要使用Google Child Actions并阅读它们,看看它们是否真的会按照您的要求执行操作。

答案 1 :(得分:1)

感谢@StanK给出的指导方向,解决方案似乎并不困难。 Html.Action或Html.RenderAction正是我所需要的。

以下是示例:

将插入部分视图的页面表单

@using (Html.BeginForm("CreateProduct", "Home"))
{
    Product code: <input type="text" name="ProductCode" /><br />
    ....
    .... 
    <!-- partial view control -->
    @Html.Action("Calendar", "Calendar")
    ....
    <input type="submit" value="Create" />
}

PartialView.cshtml(控制html视图)

Date: <input type="text" name="CreateDate" />

域对象

 public class MyCalendar
 { 
    public DateTime CreateDate { get; set; }
 }

日历控制器

public class CalendarController : Controller
{

    [ChildActionOnly]
    public ActionResult Calendar(MyCalendar cal)
    {
        // Do something with data

        return PartialView();
    }
}