在我的asp.net-mvc3项目中,我在页面上使用部分视图。该部分视图是可重用的,并将在几页上呈现。 部分视图具有我可以将数据放入的输入控件。页面上还有其他特定于页面的控件。部分视图位于页面表单内。当在部分视图控件和其他页面特定控件中输入的数据时,单个请求将被提交给控制器操作方法。
由于部分视图控件可重复使用,因此将在多个页面上显示。 我希望部分视图有一个操作,与页面控制器操作分开,将在提交整个表单时调用。基本上不会在每个页面控制器操作中处理数据,其中将显示部分视图。
有没有办法做到这一点?
答案 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();
}
}