2010-11-12 104 views
0

我想在ASP.NET MVC中創建視圖模型的不同部分分別修改以捕獲意圖的視圖。Asp.Net MVC視圖與多個強類型局部視圖與提交每個局部視圖

例如,在用戶的修改就可以在一次通過下列方式之一進行:

  1. 修改名稱,
  2. 修改電子郵件,
  3. 修改密碼,
  4. 修改狀態
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 ...)

我試圖T0基於+在OuterClass內部類之一創建視圖,這是我在自動化視圖生成器嚮導中獲得的,但無法解析DepartmentDetails以及外部類的UserID。

  1. 是我想在ASP.NET MVC 2/3 Beta中做的可能嗎?
  2. 稍後我會使用Ajax進行增強,但是我希望在沒有它的情況下儘可能多地使用表單。
  3. 如果可以在部分視圖上有獨立的表單獨立工作,那麼我想一種解決方案可能是在每個EditviewModel上擁有用戶標識和詳細信息,並且使視圖使用一個ViewModel。

回答

1

我建議你有1個模型來生成視圖和不同模型的動作(變更等)。

在我看來,它會更容易。 您可以在一個類中組合所有屬性以顯示具有不同表單的視圖,但在您的發佈操作中將它們分開。

+0

我可以做到這一點,但你能否告訴我是否可以在同一個視圖上使用多個提交操作按鈕或使用部分視圖。 – TheMar 2010-11-12 12:59:57

0

我不確定我完全理解了這個問題......但是如果你所要做的就是根據用戶點擊哪個按鈕提交相同的表單數據到不同的動作......我建議你看看這裏:How do you handle multiple submit buttons in ASP.NET MVC Framework?

根據上面鏈接的線程中的答案之一,我最終創建了一個允許MVC將表單提交重定向到正確操作的屬性。

我真的不想發佈我的代碼,因爲它仍然處於概念驗證階段......但它起作用並且感覺相當乾淨。