2011-07-14 34 views
0

我正在處理我的第一個MVC3項目。我正在使用LINQ到SQL。我在數據庫中有一個名爲「Tutorial」的表格。我使用linq來sql設計器生成dbml文件。然後爲valiation創建好友類。如何顯示標記爲「Hiddeninput」的屬性

  namespace Tut.DomainModel.Entities 
      { 
       [MetadataType(typeof(TutorialMetadata))] 
       public partial class Tutorial 
       { 
        public sealed class TutorialMetadata 
        { 
         [HiddenInput(DisplayValue = false)] 
         public int TutorialID { get; set; } 

         [Required(ErrorMessage = "Title is required")] 
         [StringLength(250, MinimumLength = 10, ErrorMessage = "Title must be between 10 and 250 characters")] 
         public string Name { get; set; } 

         [HiddenInput(DisplayValue = false)] 
         public DateTime PostDate { get; set; } 

        } 

       } 
      } 

在我的TutorialsController.cs文件中,我有兩個操作。一個是「List」,另一個是「Post」。

  public ViewResult List() 
      { 
       return View(reposi.Tutorials.ToList()); 
      } 

      public ViewResult Post() 
      { 
       return View(); 
      } 

      [HttpPost] 
      public ActionResult Post(Tutorial tutorial) 
      { 
       if (ModelState.IsValid) 
       { 
        reposi.Add(tutorial); 
        reposi.Save(); 

        return RedirectToAction("List"); 
       } 
       else 
       { 
        return View(); 
       } 
      } 

我將「PostDate」標記爲隱藏字段,因爲我不需要在創建新帖子時顯示它。我只是將當前日期分配給它。

,但在我的列表頁面,我也想顯示發佈日期,但其無法顯示,因爲它在「HiddenInput」模型類

回答

0

我應該如何修復它標有?

通過對每個視圖使用不同的視圖模型。所以如果在view1中你想要一個隱藏的字段,你可以爲它設計一個視圖模型並用HiddenInput屬性來修飾這個屬性。如果view2需要顯示值,那麼您爲它設計了一個不具有此屬性的不同視圖模型。

結論:您應該始終爲每個視圖創建視圖模型。視圖模型與給定視圖和需求從視圖到視圖=>不同視圖模型的需求發生緊密耦合。

最糟糕的錯誤是嘗試在不同視圖中重複使用相同的視圖模型。它會導致像你目前遇到的問題和問題。

+0

感謝您的幫助。我編輯我的問題並在那裏添加代碼來解釋我的問題。你能寫下一些代碼來告訴我如何解決它?我無能爲力。 – qinking126