Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc ASP.NET MVC-具有部分视图的强类型视图(视图和部分视图也应该可以访问某些全局数据)_Asp.net Mvc - Fatal编程技术网

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

Asp.net mvc ASP.NET MVC-具有部分视图的强类型视图(视图和部分视图也应该可以访问某些全局数据),asp.net-mvc,Asp.net Mvc,考虑以下场景: 操作Edit()被转发到Edit.aspx view以呈现视图 Edit.aspx由textbox1和两个局部视图(也称为视图用户控件)组成: part1.ascx(具有textbox2和textbox3) 和part2.ascx(具有复选框1和复选框2) 您想为Edit.aspx创建一个强类型视图,比如说,您使用的是EditViewData类 您还需要Edit.aspx、part1.ascx和part2.ascx能够访问一些全局信息,例如currentUserID、curren

考虑以下场景:

操作Edit()被转发到Edit.aspx view以呈现视图

Edit.aspx由textbox1和两个局部视图(也称为视图用户控件)组成: part1.ascx(具有textbox2和textbox3) 和part2.ascx(具有复选框1和复选框2)

您想为Edit.aspx创建一个强类型视图,比如说,您使用的是EditViewData类

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

问题:

  • 如何构造EditViewData类
  • 如何将视图数据传递给视图和局部视图,以便在提交表单并返回Edit()http.post操作时自动填充对象
  • 将什么传递给Edit()http.post操作

  • 您的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" ); %>
    <%}%>
    
    
    

    它应该自动继承控件中的模型。请记住,您的BeginForm应该围绕两个控件(ASCx)。

    +1-一直以来,我都将这个.Model作为partials的模型参数传递。没有意识到它会自动传下来。不错。