1

厳密に型指定されたビューがあり、それを NHaml ページで使用したいと考えています。

WebForms エンジンでは、ViewData 型を<%@ Page%>ディレクティブまたは分離コード ファイルに記述します。

NHaml でそれを行うにはどうすればよいでしょうか。

4

3 に答える 3

1

このページには、これを行うためのパッチ(NHamlを検索)があります。それが機能するかどうかはわかりません。これには、MvcContribのNHamlが必要です。

NHaml ViewEngineがMVCプレビュー3で動作するようにアップグレードするためのパッチNHamlViewにModelプロパティが含まれているため、インターフェイスプロパティは一般的ではなく、Views内でViewDataアクセスを厳密に入力したいため、ViewDataDictionaryのモデルデータへの厳密に型指定されたアクセスが可能になります..たとえば、プレビュー2のViewData.Propertyは、プレビュー3のModel.Propertyになります。2008年5月30日適用:リビジョン375で適用。

于 2009-11-24T14:59:11.797 に答える
1

<%@ Page%> ディレクティブまたは分離コード ファイルに ViewData 型を記述します。

NHaml でそれを行うにはどうすればよいでしょうか。

する必要はありません。タイプを指定せずにモデルを使用するだけで機能します。例えば:

%h2= Model.PageTitle
  %p= Model.UserMessageOrSomething

これは、NHAML ビューがコンパイルされるためです。したがって、モデルのすべてのプロパティ (名前、型など) が正しい場合、ビューは (ソース コードと同様に) コンパイルされます。

于 2009-11-25T00:26:15.733 に答える
1

ボリス

私が正しく理解していれば、強い型付けされた nhaml ビューが必要ですか?

この場合、svn にこれを行うサンプル プロジェクトがあります。見て

http://nhaml.googlecode.com/svn/trunk/srcおよび NHaml.Samples.Mvc.CSharp プロジェクト

そして、ここにいくつかの抽出されたコードがあります

コントローラ

public class ProductsController : Controller
{
    private readonly NorthwindDataContext northwind = new NorthwindDataContext(
        ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString );


    public ActionResult Edit( int id )
    {
        var viewData = new ProductsEditViewData { Product = northwind.GetProductById( id ) };

        viewData.Categories = new SelectList( northwind.GetCategories(), "CategoryID", "CategoryName", viewData.Product.CategoryID );
        viewData.Suppliers = new SelectList( northwind.GetSuppliers(), "SupplierID", "CompanyName", viewData.Product.SupplierID );

        return View( "Edit", viewData );
    }

}

意見

%h2= ViewData.Model.Product.ProductName
%form{action='#{Url.Action("Update", new { ID=ViewData.Model.Product.ProductID \})}' method="post"}
  %table
    %tr
      %td Name:
      %td= Html.TextBox("ProductName", ViewData.Model.Product.ProductName)
    %tr
      %td Category:
      %td= Html.DropDownList("CategoryID", ViewData.Model.Categories, (string)null)
    %tr
      %td Supplier:
      %td= Html.DropDownList("SupplierID", ViewData.Model.Suppliers, (string)null)
    %tr
      %td Unit Price:
      %td= Html.TextBox("UnitPrice", ViewData.Model.Product.UnitPrice.ToString())
  %p
  - Html.RenderPartial(@"_Button")

モデルを見る

public class ProductsEditViewData
{
    public Product Product { get; set; }
    public SelectList Suppliers { get; set; }
    public SelectList Categories { get; set; }
}

それが役立つことを願っています

于 2009-11-24T22:57:08.860 に答える