綁定查看數據我目前的視圖模型:控制器上
public class ServiceSheetViewModel
{
public List<ServiceSheetQuestionViewModel> questions { get; set; }
public List<VehicleAction> actions { get; set; }
}
而且,在視圖上,我產生了以下內容:
@Html.EditorFor(modelItem => Model.questions[j], "ServiceSheetQuestionViewModel");
@Html.EditorFor(m => Model.actions[i], "VehicleAction");
在控制器:
[HttpPost]
public ActionResult CreateServiceSheet([Bind(Include = "questions,actions")] ServiceSheetViewModel model, int vehicleId, int serviceSheetId)
當我提交表單時,它沒有約束力。
關於發佈信息,它說它發送一個列表ServiceSheetQuestionViewModel
和列表VehicleActions
。
如何正確地使表單綁定正確?
編輯1 - 查看代碼
@model SupervisedSolutions.Models.ViewModels.ServiceSheetViewModel
....
@using (Html.BeginForm("CreateServiceSheet", "PerformService", Model))
{
....
@foreach (var rootItem in Model.questions.Where(x => x.Question.IsGroup || (!x.Question.IsGroup && (x.Question.ParentQuestion == null || x.Question.ParentQuestion.ID == 0))).ToList())
{
var i = Model.questions.IndexOf(rootItem);
if (Model.questions[i].Question.IsGroup)
{
@Html.HiddenFor(m => Model.questions[i].Question.ID)
@Html.HiddenFor(m => Model.questions[i].Question.Title)
@Html.HiddenFor(m => Model.questions[i].Question.Description)
@Html.HiddenFor(m => Model.questions[i].Question.IsGroup)
@Html.HiddenFor(m => Model.questions[i].Question.OrderIndex)
@Html.HiddenFor(m => Model.questions[i].Question.ParentQuestion.ID)
@Html.HiddenFor(m => Model.questions[i].Question.ParentQuestion.setDeleted)
@Html.HiddenFor(m => Model.questions[i].Question.ParentQuestion.Title)
@Html.HiddenFor(m => Model.questions[i].Question.ParentQuestion.Created)
<h1>@Model.questions[i].Question.Title</h1>
<p>@Model.questions[i].Question.Description</p>
....
@foreach (var item in Model.questions.Where(x => !x.Question.IsGroup && (x.Question.ParentQuestion != null && x.Question.ParentQuestion.ID == Model.questions[i].Question.ID)).ToList())
{
var j = Model.questions.IndexOf(item);
@Html.EditorFor(modelItem => Model.questions[j], "ServiceSheetQuestionViewModel");
}
}
else
{
@Html.EditorFor(modelItem => Model.questions[i], "ServiceSheetQuestionViewModel");
}
}
@foreach (var todo in Model.actions)
{
var i = Model.actions.IndexOf(todo);
@Html.EditorFor(m => Model.actions[i], "VehicleAction");
}
<input type="submit" value="Start Run" class="btn btn-info" />
}
這是EditorTemplate
爲ServiceSheetQuestionsViewModel
:
@model SupervisedSolutions.Models.ViewModels.ServiceSheetQuestionViewModel
....
@Html.HiddenFor(m => m.Question.ID)
@Html.HiddenFor(m => m.Question.Title)
@Html.HiddenFor(m => m.Question.Description)
@Html.HiddenFor(m => m.Question.IsGroup)
@Html.HiddenFor(m => m.Question.OrderIndex)
@Html.HiddenFor(m => m.Question.ParentQuestion.ID)
@Html.HiddenFor(m => m.Question.ParentQuestion.setDeleted)
@Html.HiddenFor(m => m.Question.ParentQuestion.Title)
@Html.HiddenFor(m => m.Question.ParentQuestion.Created)
<b>@Html.DisplayFor(m => m.Question.Title)</b>
<label>
@Html.RadioButtonFor(m => m.isFault, "Fault")Fault
</label>
<label>
@Html.RadioButtonFor(m => m.isFault, "NoFault")No Fault
</label>
@Html.LabelFor(model => model.FaultDescription)
@Html.TextAreaFor(model => model.FaultDescription)
@Html.ValidationMessageFor(model => model.FaultDescription)
@Html.ValidationMessageFor(m => m.isFault)
這是EditorTemplate
爲Vehicle Action
:
@model SupervisedSolutions.Models.VehicleAction
@Html.LabelFor(model => model.Description)
@Html.TextAreaFor(model => model.Description)
@Html.ValidationMessageFor(model => model.Description)
@Html.LabelFor(model => model.Priority)
@Html.TextAreaFor(model => model.Priority)
@Html.ValidationMessageFor(model => model.Description)
@Html.LabelFor(m => m.DueDate>
@Html.EditorFor(model => model.DueDate)
@Html.ValidationMessageFor(m => m.DueDate)
EDIT 2 - 這裏是有關發佈數據的信息:
vehicleId:50
serviceSheetId:1
ID:0
questions[1].Question.ID:3
questions[1].Question.Title:Testing
questions[1].Question.Description:AASDASD
questions[1].Question.IsGroup:True
questions[1].Question.OrderIndex:1
questions[1].Question.ParentQuestion.ID:
questions[1].Question.ParentQuestion.setDeleted:
questions[1].Question.ParentQuestion.Title:
questions[1].Question.ParentQuestion.Created:
questions[0].Question.ID:1
questions[0].Question.Title:Test Question
questions[0].Question.Description:Habba
questions[0].Question.IsGroup:False
questions[0].Question.OrderIndex:0
questions[0].Question.ParentQuestion.ID:3
questions[0].Question.ParentQuestion.setDeleted:False
questions[0].Question.ParentQuestion.Title:Testing
questions[0].Question.ParentQuestion.Created:28/11/2016 7:35:12 PM
questions[0].isFault:NoFault
questions[0].FaultDescription:Teste
questions[3].Question.ID:5
questions[3].Question.Title:Group 2
questions[3].Question.Description:Groupin 2
questions[3].Question.IsGroup:True
questions[3].Question.OrderIndex:0
questions[3].Question.ParentQuestion.ID:
questions[3].Question.ParentQuestion.setDeleted:
questions[3].Question.ParentQuestion.Title:
questions[3].Question.ParentQuestion.Created:
questions[2].Question.ID:4
questions[2].Question.Title:Test Question 23
questions[2].Question.Description:TEEEE
questions[2].Question.IsGroup:False
questions[2].Question.OrderIndex:0
questions[2].Question.ParentQuestion.ID:5
questions[2].Question.ParentQuestion.setDeleted:False
questions[2].Question.ParentQuestion.Title:Group 2
questions[2].Question.ParentQuestion.Created:1/12/2016 4:19:49 PM
questions[2].isFault:NoFault
questions[2].FaultDescription:Teste
actions[0].Description:Erro2
actions[0].Priority:1
actions[0].DueDate:2010-01-01
向您展示視圖(您生成表單控件的循環以及您用於「ServiceSheetQuestionViewModel」和「VehicleAction」的EditorTemplates) –
@StephenMuecke我爲視圖添加了完整的HTML。 –