ASP.NET中Html.PartialとHtml.アクションの違い

4953 ワード

Html.Partialは通常、静的なコンテンツを表示します.指定したPartialメソッドでバインドされているパラメータではなく、デフォルトではホストページのModelタイプです.そのため、PartialページのModelとホームページのModelタイプが一致しない場合は、必ずPartialメソッドでバインドされているパラメータを指定してください.そうしないと、エラーが発生します.Html.Partialメソッドもアクションメソッドをトリガーしません.
Html.ActionはActionメソッドを呼び出し、特定のActionで返される値に基づいて、ViewまたはPartialView、またはJsonなどを返します.
したがって、異なるModelを用いると、Htmlを用いることが考えられる.アクションで処理します.コードの一部を説明します.
   
   
   
   
  1. @model MvcApplication1.Views.Test2.Test2_Index  
  2. @{  
  3.     ViewBag.Title = "Index";  
  4. }  
  5.  
  6. <h2>Test2-Indexh2> 
  7. @Model.i<br /> 
  8.  
  9. @*** action ,PartialIndex.cshtml  
  10. Model Index.cshtml Model ,  
  11. Model, 。  
  12. *@  
  13.  
  14. @Html.Partial("PartialIndex",new MvcApplication1.Views.Test2.Test2_ParitalIndex())<br /> 
  15.  
  16. @*  
  17. ** action , Model Test2_ParitalIndex
  18. *@  
  19. @Html.Action("PartialIndex", "Test2")<br /> 

 
   
   
   
   
  1. @model MvcApplication1.Views.Test2.Test2_ParitalIndex  
  2. TestPartial<br /> 
  3. @Model.i<br /> 

 
   
   
   
   
  1. public class Test2Controller : Controller  
  2. {  
  3.     public ActionResult Index(Test2_Index vm)  
  4.     {  
  5.         return View("Index",vm);  
  6.     }  
  7.  
  8.     public ActionResult PartialIndex(Test2_ParitalIndex vm)  
  9.     {  
  10.         return View("PartialIndex", vm);  
  11.     }  

 
以下の方法について、
   
   
   
   
  1. public ActionResult Index(Test2_Index vm)  
  2.         {  
  3.             return View("Index",VM);  
  4.         } 

ActionメソッドGetリクエスト時にバインドパラメータが設定されていない場合、vmはデフォルトのnewを取得します.
Test2_Index()オブジェクト.バインドパラメータが設定されている場合は、設定値に従ってActionメソッドに渡されます.