Question

J'ai vue fortement typé et que vous souhaitez l'utiliser dans une page NHaml.

Avec le moteur WebForms je décrirais le type ViewData dans la directive <%@ Page%> ou dans le fichier codebehind.

Comment pourrais-je aller à ce sujet dans NHaml?

Était-ce utile?

La solution

Boris

Si je comprends bien, vous voulez juste avoir une forte vue nhaml dactylographiée?

Si tel est le cas, il est un exemple de projet dans svn qui fait cela. Jetez un coup d'oeil à

http://nhaml.googlecode.com/svn/trunk/src et le projet NHaml.Samples.Mvc.CSharp

Et voici un code extrait

Contrôleur

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 );
    }

}

Afficher

%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")

Voir le modèle

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

L'espoir qui aide

Autres conseils

cette page il y a un patch (recherche NHaml) pour faire ça. Je ne sais pas si cela fonctionne. Cela nécessite NHaml de MvcContrib.

  

Patch pour NHaml View Engine mise à niveau   à travailler avec MVC Preview 3 inclus   une propriété de type sur NHamlView de la   permettre un accès fortement typé au   des données de modèle dans le ViewDataDictionary   comme la propriété d'interface est non   générique et nous aimons typer   notre accès ViewData .. Vues dans les   par exemple. ViewData.Property sous Preview 2   deviendrait Model.Property sous   Aperçu 3 appliquées 30 mai 2008: appliquée   en révision 375.

  

Je dirais que le type ViewData dans   la directive <% @ Page%> ou dans la   fichier codebehind.

     

Comment pourrais-je aller à ce sujet dans NHaml?

ne ont pas besoin de le faire . Vous pouvez il suffit d'utiliser le modèle sans préciser son type et cela fonctionnera. Par exemple:

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

En effet, la vue NHAML est compilée. Ainsi, lorsque toutes les propriétés du modèle sont corrects (noms, types, etc.) sera compilé le point de vue (code source serait).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top