C# NHaml中的强类型视图?
我有一个强类型视图,希望在NHaml页面中使用它 对于WebForms引擎,我将在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中的模型数据 因为接口属性是非 泛型,我们喜欢强类型
指令或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助手一起使用。据我所知,从你和其他人的回答来看,我不需要在任何地方发出指令。我甚至都没试过它是否管用,所以我以后会试试看。