1

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

由于部分视图控件是可重复使用的,它将显示在多个页面上。我想为部分视图设置一个操作,与页面控制器操作分开,当整个表单提交时将调用该操作。基本上不处理将出现部分视图的每个页面控制器操作中的数据。

有什么可能的方法吗?

4

2 回答 2

1

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

这实质上让 PartialView 拥有自己的操作方法,这意味着渲染子操作的主视图根本不需要关心部分视图所需的模型 - 其逻辑包含在子操作中。

但是您可能需要使用 Google Child Actions 并阅读它们,看看它们是否真的会做您需要他们做的事情。

于 2012-09-25T21:48:56.767 回答
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();
    }
}
于 2012-09-25T23:17:50.513 回答