嗨,大家好我有麻煩與我的mvc應用程序。它是一個簡單的測驗應用程序,我堅持創建問題模型的創建視圖。複雜類型的模型不會通過列表propery
我有問題和選擇模型與適當的視圖模型(在我的情況下,他們是QustionDTO和OptionDTO),我想使問題與選項列表的cshtml創建視圖。 like this但是當我提交表單時,我的選項列表爲空。 這是我的問題和期權定價模型
public class Question
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required]
public string QuestionText { get; set; }
public virtual ICollection<Option> Options { get; set; }
}
public class Option
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required]
[Display(Name ="Answer text")]
public string OptionText { get; set; }
[Required]
public bool IsCorrect { get; set; }
}
這是我的DTO模式
public class QuestionDTO
{
public int Id { get; set; }
public string QuestionText { get; set; }
public List<OptionDTO> Options { get; set; }
}
public class OptionDTO
{
public int Id { get; set; }
public string OptionText { get; set; }
public bool IsCorrect { get; set; }
}
,這是我與位於「〜/查看/共享/ editortemplate/OptionDTO.cshtml」編輯模板視圖
@model Quiz.BusinessEntites.QuestionDTO
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>QuestionDTO</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.QuestionText, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.QuestionText, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.QuestionText, "", new { @class = "text-danger" })
</div>
</div>
<table class="table" style="width:50%">
@for (int i = 0; i < 3; i++)
{
@Html.EditorFor(model=>model.Options[i])
}
</table>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
這是OptionDTO編輯模板
@using Quiz.BusinessEntites
@model Quiz.BusinessEntites.OptionDTO
<tr>
<th class="col-md-2">
@Html.DisplayNameFor(m => m.OptionText)
</th>
<th class="col-md-2">
@Html.DisplayNameFor(m => m.IsCorrect)
</th>
</tr>
<tr>
<td class="col-md-2">
@Html.EditorFor(m => m.OptionText)
</td>
<td class="col-md-2">
@Html.EditorFor(m => m.IsCorrect)
</td>
</tr>
從上圖可以看出選項列表爲空。如果你有任何建議,將不勝感激。
作爲一個側面說明,它只是'@ Html.EditorFor( ('EditorFor()'''方法接受'IEnumerable'併爲集合 –
中的每個項目生成正確的html,但是如果我想使用多個editorfor模板我需要使用for循環?就像我的情況一樣,或者我錯過了一些東西。只是所以你知道那些作品。 –
不,你再也不讀了! –