Cyb*_*ead 2 asp.net-mvc viewmodel razor
通过创建一个简单的Bug/Feature跟踪系统,我正在学习ASP.NET MVC和Entity Framework Code First,LINQ.我想通过让用户提交上面的表单并将提交的内容显示在下面来模仿Twitter界面.我不确定如何构建强类型视图和所述模型.我想将我的创建和索引视图合并到一个视图中,问题是创建采用单一类型Entry(Pylon.Models.Entry
),而索引采用入口(IEnumerable<Pylon.Models.Entry>
)的IEnumerable .下面是我的viewmodel类和Display视图.我只是从"创建"和"索引"视图中复制了脚手架生成的代码,显然混合不同的模型会导致运行时错误,从而导致视图被破坏.我的问题是如何重组视图.
// Entry ViewModel
public class EntryViewModel
{
public Entry Entry { get; set; }
public IEnumerable<Entry> Entries { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
@* Display View *@
@model ?
@{
ViewBag.Title = "Display";
}
<hr />
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<fieldset>
<legend>Entry</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Description)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Description)
@Html.ValidationMessageFor(model => model.Description)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.OpenDate)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.OpenDate)
@Html.ValidationMessageFor(model => model.OpenDate)
</div>
<div class="editor-label">
Paradigm
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.ParadigmId, ((IEnumerable<Pylon.Models.Paradigm>)ViewBag.PossibleParadigms).Select(option => new SelectListItem
{
Text = (option == null ? "None" : option.Name),
Value = option.ParadigmId.ToString(),
Selected = (Model != null) && (option.ParadigmId == Model.ParadigmId)
}), "Choose...")
@Html.ValidationMessageFor(model => model.ParadigmId)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
<hr />
<table>
<tr>
<th></th>
<th>
Description
</th>
<th>
OpenDate
</th>
<th>
Type
</th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@item.Description
</td>
<td>
@String.Format("{0:d}", item.OpenDate)
</td>
<td>
@(item.Paradigm == null ? "None" : item.Paradigm.Name)
</td>
</tr>
}
</table>
Run Code Online (Sandbox Code Playgroud)
任何指针或更好的教程/工作代码都会很棒.
进行以下更改.
@model EntryViewModel
在视图的顶部.model => model.Description
为model => model.Entry.Description
,所以model
替换为model.Entry
@foreach (var item in Model.Entries )
归档时间: |
|
查看次数: |
8306 次 |
最近记录: |