具有多个强类型局部视图的Asp.Net MVC视图,每个局部视图提交

时间:2010-11-12 05:32:32

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

我正在尝试在ASP.NET MVC中创建一个视图,其中视图模型的不同部分被单独修改以捕获意图。

例如,用户的修改可以一次以下列方式之一完成:

  1. 修改名称,
  2. 修改电子邮件,
  3. 修改密码,
  4. 修改状态
  5. public class UserEditViewModel
    {
        public string DepartmentDetails { get; set; }
        [HiddenInput(DisplayValue = false)]
        public Guid UserId { get; set; }
    
        public class UserNameEditModel
        {
            [Required(ErrorMessage = "Name Required")]
            [DisplayName("Name")]
            [StringLength(50, ErrorMessage = "Name must be less than or equal to 50 characters")]
            public string Name { get; set; }
        }
    
        public class UserPasswordEditViewModel
        {
            [Required(ErrorMessage = "Password cannot be Empty")]
            [DisplayName("Password")]
            public string Password { get; set; }
    
            [Required(ErrorMessage = "Confirm Password is Required")]
            [DisplayName("Confirm Password")]
            public string ConfirmPassword { get; set; }
        }
    
        public class UserStatusEditViewModel
        {
            [Required(ErrorMessage = "Status  Required")]
            [DisplayName("Status")]
    
            public bool  Status { get; set; }
    
            [Required(ErrorMessage = "Comment  Required")]
            [DisplayName("Comment")]
            public string Comment { get; set; }
        }
    }
    

    我想要做的是根据外部类+内部类之一创建强类型部分视图。 每个局部视图都有自己的表单提交,该操作将指向单独的控制器操作(编辑密码,editname,editstatus ...)

    我尝试基于 outerclass +内部类之一来创建视图,这是我在自动视图构建器向导中获得的,但它无法解析DepartmentDetails以及外部类的UserID。

    1. 我想在ASP.NET MVC 2/3 Beta中做什么?
    2. 我稍后会使用Ajax进行增强,但我想在没有它的情况下尽可能多地使用它。
    3. 如果可以在局部视图上单独使用单独的表单,那么我想一个解决方案可能是在每个EditviewModel上都有用户ID和详细信息,并且视图使用一个ViewModel。

2 个答案:

答案 0 :(得分:1)

我建议你有1个模型来生成视图和不同的动作模型(更改传递等)。

在我看来这会更容易。 您可以在一个类中组合所有属性,以显示具有不同表单的视图,但在后期操作中将它们分开。

答案 1 :(得分:0)

我不确定我是否完全理解这个问题...但是,如果你要做的就是根据用户点击的按钮将相同的表单数据提交给不同的操作...我建议你看看这里: How do you handle multiple submit buttons in ASP.NET MVC Framework?

基于我上面链接的线程中的一个答案,我最终创建了一个允许MVC将表单提交重定向到正确操作的属性。

我真的不想发布我的代码,因为它仍然处于概念验证阶段...但是它起作用并且感觉相当干净。