C# NHaml中的强类型视图?

C# NHaml中的强类型视图?,c#,asp.net-mvc,strongly-typed-view,nhaml,C#,Asp.net Mvc,Strongly Typed View,Nhaml,我有一个强类型视图,希望在NHaml页面中使用它 对于WebForms引擎,我将在指令或codebehind文件中描述ViewData类型 在NHaml中,我该怎么做呢?在页面上有一个补丁(搜索NHaml)来实现这一点。我不知道它是否有效。这需要来自MvcContrib的NHaml NHaml视图引擎升级补丁 它可以与MVC预览3一起使用 NHamlView的“对象”上的模型特性 允许对数据库进行强类型访问 ViewDataDictionary中的模型数据 因为接口属性是非 泛型,我们喜欢强类型

我有一个强类型视图,希望在NHaml页面中使用它

对于WebForms引擎,我将在
指令或codebehind文件中描述ViewData类型

在NHaml中,我该怎么做呢?

在页面上有一个补丁(搜索NHaml)来实现这一点。我不知道它是否有效。这需要来自MvcContrib的NHaml

NHaml视图引擎升级补丁 它可以与MVC预览3一起使用 NHamlView的“对象”上的模型特性 允许对数据库进行强类型访问 ViewDataDictionary中的模型数据 因为接口属性是非 泛型,我们喜欢强类型 视图中的视图数据访问。。 e、 g.预览2下的ViewData.Property 将成为模型。下的属性 预览3适用于2008年5月30日:已应用 在第375次修订中

鲍里斯

如果我理解正确的话,您只想拥有一个强类型的nhaml视图

如果是这种情况,svn中有一个示例项目可以做到这一点。看看

以及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; }
}
希望有帮助

我将在中描述ViewData类型 指令或在 代码隐藏文件

我将如何在NHaml中实现这一点

你不需要这样做。您可以只使用模型,而不指定其类型,它将正常工作。例如:

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

这是因为NHAML视图被编译。因此,当模型上的所有属性都正确(名称、类型等)时,视图将被编译(与源代码一样)。

Preview 3?那是很久以前的事了!为什么到目前为止还没有包括在内?不管怎样,我还是要看一看,谢谢?酷。我认为这确实为将来实现自动完成功能制造了障碍:事实上,lanwin已经有了一个自动完成的解决方案:)好吧,差不多了。实际上,我希望它能与新的asp.net mvc 2 LabelFor()和其他XFor Html助手一起使用。据我所知,从你和其他人的回答来看,我不需要在任何地方发出指令。我甚至都没试过它是否管用,所以我以后会试试看。