【发布时间】:2016-06-22 18:15:55
【问题描述】:
我是 MVC 新手,在尝试创建简单 UI 时遇到问题。我必须在视图中显示模型并支持分页。 我的视图将显示每一列,并且在列名称下方必须有一个文本框或下拉列表来执行数据过滤。
我的模型如下
public class ViewModel : ViewModelBase
{
public long Id { get; set; }
[DisplayName("Name")]
public string Name{ get; set; }
[DisplayName("Full Name")]
public string fullName{ get; set; }
[DisplayName("State")]
public string adressState{ get; set; }
[DisplayName("Grade")]
public string grade{ get; set; }
public MultiSelectList grades{ get; set; }
public MultiSelectList adressState{ get; set; }
}
我将 IEnumerable 模型传递给视图,我的视图应如下所示
<div class="dataTable">
<table id="mainTable">
<thead>
<tr >
<th ></th>
@Html.HiddenFor(model => model.Id)
<th>
@Html.DisplayNameFor(model => model.Name)
</th>
<th>
@Html.DisplayNameFor(model => model.fullName)
</th>
<th>
@Html.DisplayNameFor(model => model.address)
</th>
<th>
@Html.DisplayNameFor(model => model.grade)
</th>
</tr>
<tr >
<th>
<img src="~/Images/someimage.png" alt="Options" height="25" width="25" />
</th>
@Html.HiddenFor(model => model.Id)
<th>
@Html.TextBoxFor(model => model.name, new { onkeyup = "handleKeyPress(event, this)", placeholder = "Search", @class = "TextBox searchProperties" })
</th>
<th>
@Html.TextBoxFor(model => model.fullName, new { onkeyup = "handleKeyPress(event, this)", placeholder = "Search", @class = "TextBox searchProperties"})
</th>
<th>
@Html.ListBoxFor(model => model.adressState, Model.adressStateItemList as MultiSelectList, new { onchange = "handleDropdownChange()", @id = "adressStateDropDown",
@class = "searchProperties" })
</th>
<th>
@Html.ListBoxFor(model => model.gradeItem, Model.gradeItemList as MultiSelectList, new { onchange = "handleDropdownChange()", @id = "gradeDropDown",
@class = "searchProperties" })
</th>
</tr>
</thead>
<tbody id="tableResults">
@{Html.RenderPartial("_StudentPartial", Model);}
</tbody>
</table>
student partial 必须有一个 for each 循环遍历模型数据和显示。 我无法将我的模型绑定到查看和显示数据,因为我的主视图需要一个模型来显示属性的文本框,而部分视图需要一个 IEnumerable 模型。我试过了 @Html.Partial("_studentPartial", new IEnumerable<.solution.viewmodel>) 但不起作用。有人可以提出解决方案吗?
【问题讨论】:
-
如果显示的视图有一个单个实例的模型,你希望如何导出一个list?你可以把一篮子苹果变成一个个苹果,但你不能把一个个苹果变成一篮子苹果。此外,您不能创建 interface 的
new实例,只能创建 class。 -
您显示的视图暗示模型是单个实例,而不是集合。如果模型是一个集合,为什么需要将它转换为内部视图中的集合?这没有任何意义。
-
如果模型是一个集合,那么这个视图中已经存在的任何 HTML 助手如何工作?似乎还存在对模型上根本没有的属性的引用,并且模型似乎具有多个同名的属性。由于多种原因,此代码甚至无法编译。您可能需要备份一下并返回一些 MVC 教程。
-
"could you suggest a way to implement my requirement"- 这是一个非常广泛的问题。 Stack Overflow 可以帮助回答特定问题,但不能为您提供根据您的需求定制的完整教程。老实说,您在这里拥有的是一堆由于多种原因无法工作的代码。除非您掌握了基础知识,否则不会发生“实现您的要求”。不要只是潜入并构建一个没有经验的复杂页面。从小处着手,逐步完善,一次只做一个小功能。 -
好吧!!我没有要求定制教程。如果我不清楚,我的要求只是在主视图上有模型并将 IEnumerable 模型传递给局部视图。我只是想问一下这是否可能?感谢您的建议。
标签: c# asp.net-mvc-4 razor