ASP.NET MVC - 具有部分视图的强类型视图(视图和部分视图也应该可以访问某些全局数据)

时间:2009-04-10 02:35:15

标签: asp.net-mvc

考虑以下情况:

Action Edit()被转发到Edit.aspx视图以呈现视图。

Edit.aspx包含textbox1和两个部分视图(也就是查看用户控件): part1.ascx(有textbox2,textbox3) 和part2.ascx(有checkbox1和checkbox2)

您希望Edit.aspx具有强类型视图,例如,您使用EditViewData类。

您还需要Edit.aspx,part1.ascx和part2.ascx可以访问一些全局信息,例如currentUserID,currentUserLanguage,currentUserTimezone。

问题:

  1. 如何构建EditViewData类?
  2. 如何将视图数据传递给视图和部分视图,以便在提交表单并返回Edit()http.post操作时自动填充对象?
  3. 您传递给Edit()http.post操作的内容是什么?

1 个答案:

答案 0 :(得分:1)

您的viewdata应如下所示:

public class EditViewData
{
    public int currentUserID { get; set; }
    public string currentUserLanguage { get; set; }
    public string currentUserTimezone { get; set; }
    // ... other stuff
}

强烈键入aspx之后,还需要强力键入ascx。然后在你的aspx中,当你调用RenderPartial时,只需像往常一样调用:

<% using (Html.BeginForm()) %>
<% Html.RenderPartial("part1.ascx" ); %>
<% Html.RenderPartial("part2.ascx" ); %>
<%}%>

它应该自动继承控件中的Model。请记住,你的BeginForm应该围绕你的两个控件(ascxs)。