Asp.net mvc 3 MVC3 Razor编辑器模板和其他参数
我是mvc3和razor的新手,而C#正是因为这一点,一家小公司刚刚给了我一份合同,让我在一个失败的项目上完成这个庞大的项目。。。现在我需要根据用户保存的选择创建一个图书表。。。书籍目前在模型中有大约40种不同的信息,我想知道如何在模板编辑器或任何其他方式中正确设置它 现在在视图中看起来是这样的:Asp.net mvc 3 MVC3 Razor编辑器模板和其他参数,asp.net-mvc-3,Asp.net Mvc 3,我是mvc3和razor的新手,而C#正是因为这一点,一家小公司刚刚给了我一份合同,让我在一个失败的项目上完成这个庞大的项目。。。现在我需要根据用户保存的选择创建一个图书表。。。书籍目前在模型中有大约40种不同的信息,我想知道如何在模板编辑器或任何其他方式中正确设置它 现在在视图中看起来是这样的: <table> <tr class="header"> @if (!((List<string>)Session["searchPre
<table>
<tr class="header">
@if (!((List<string>)Session["searchPreferences"]).Contains("Authors"))
{
<td>Author</td>
}
@if (!((List<string>)Session["searchPreferences"]).Contains("bookName"))
{
<td>bookName</td>
}
@if (!((List<string>)Session["searchPreferences"]).Contains("editorName"))
{
<td>editorName</td>
}
</tr>
@foreach (BookModel book in Model.bookList)
{
<tr class="element">
@if (!((List<string>)Session["searchPreferences"]).Contains("Author"))
{
<td>@book.Author</td>
}
@if (!((List<string>)Session["searchPreferences"]).Contains("editorName"))
{
<td>@book.editorName</td>
}
</tr>
+ 1 <tr> </tr> ... for each 40 attributes in books
</table>
@如果(!((列表)会话[“搜索首选项])。包含(“作者”))
{
作者
}
@如果(!((列表)会话[“搜索首选项])。包含(“书名”))
{
书名
}
@如果(!((列表)会话[“searchPreferences”])。包含(“editorName”))
{
编辑名称
}
@foreach(Model.bookList中的BookModel book)
{
@如果(!((列表)会话[“搜索首选项])。包含(“作者”))
{
@书的作者
}
@如果(!((列表)会话[“searchPreferences”])。包含(“editorName”))
{
@book.editorName
}
+书中每40个属性对应1个
如何制作编辑器模板并包含搜索首选项(存储在会话中或LogUser模型上)
其他问题:
我已经掌握了使用@Html.EditorFor(model=>model.Books)的概念,它会循环抛出我的书籍列表,但是如何确保它只显示用户想要的内容呢?比如我可以向模板传递一些参数,并使用传递的列表来验证每一列
还有没有一种更简单的方法来写下我的模板……有点像“在我的书模型中获取每个属性并创建一行,如果用户选择了它”,因为客户提供了一种新的方式来对他的书进行分类,每次他改变想法时,我都必须重新编码……我的上级经常这样做。(由于我的经验很少,所以报酬很高,所以即使项目启动错误,客户拒绝让我们从头开始,我也会努力解决这个问题)
提前非常感谢您提供的任何信息、帮助等……即使这是指向一个好的演示或博客条目的链接,也会有所帮助。我不能100%确定您想做什么,但如果我理解正确,您就有一个表中显示内容的用户首选项列表。我给您的建议是,构建一个已经格式化了内容的视图模型按您希望的方式提供数据 也就是说,当您将模型传递到视图时,您只有用户在其搜索首选项中指定的列和数据 可以有一个Book对象,其中包含列列表,每个“列”都是自己的对象,带有标签和值 PublicBookViewModel() { 列表数据{get;set;} } 公共专栏() { 字符串标签{get;set;} 字符串值{get;set;} } 加载模型时,您将仅为用户需要的数据创建列 也许有更好的方法可以让你格式化它,我只是在一瞬间想到了这一点。但我认为你应该看看如何处理数据服务器端的过滤和格式化,而不是页面上的Razor 编辑器模板用于自定义对象在html页面上的表示方式,特别是当该对象将在页面上的许多位置使用时,这样您就不需要重复自己的操作。它实际上不是用于过滤数据的
如果这没有意义或者我误解了您,请告诉我。我不100%确定您想做什么,但是如果我理解正确,您有一个用户首选项列表,可以在表中显示什么。我的建议是,构建一个视图模型,该模型已经按照您希望的方式格式化了数据 也就是说,当您将模型传递到视图时,您只有用户在其搜索首选项中指定的列和数据 可以有一个Book对象,其中包含列列表,每个“列”都是自己的对象,带有标签和值 PublicBookViewModel() { 列表数据{get;set;} } 公共专栏() { 字符串标签{get;set;} 字符串值{get;set;} } 加载模型时,您将仅为用户需要的数据创建列 也许有更好的方法可以让你格式化它,我只是在一瞬间想到了这一点。但我认为你应该看看如何处理数据服务器端的过滤和格式化,而不是页面上的Razor 编辑器模板用于自定义对象在html页面上的表示方式,特别是当该对象将在页面上的许多位置使用时,这样您就不需要重复自己的操作。它实际上不是用于过滤数据的
如果这不合理或我误解了您,请告诉我。好的,我实际上是到处走动,手动输入,您可以使用会话项,检查用户是否喜欢显示该列,但我仍然希望pro对此进行输入,因为这感觉怪怪的(我只是从视图中获取代码,并将其放在编辑器模板中,但基本上是一样的混乱,如果客户端进行了重大更改,则很容易自杀)好的,我实际上已经手动输入了它,你可以使用会话项检查用户是否喜欢显示该列,但我还是喜欢pro的输入,因为它感觉很奇怪(我只是从视图中获取代码,并将其放在编辑器模板中,但基本上是一样的混乱,如果客户端进行了重大更改,则很容易自杀)我向工作中的大四学生询问这一点,他说我们必须输入所有数据,因为用户可以在飞行中决定显示什么和不显示什么……他今天不在,明天也不在,但我会在明天早上给他发一封电子邮件来确定这一点