view返回null ASP.NET MVC 5中的帖子模型

时间:2016-03-09 10:30:54

标签: c# asp.net-mvc asp.net-mvc-4

我无法通过post方法获取控制器中的模型数据,请帮我解决下面的代码。

model:
public class CardQuestionData
{
    public int cardId { get; set; }
    public string cardNotation { get; set; }
    public string cardDesc { get; set; }

    public List<SectionQuestionData> sectionData { get; set; }
}

public class SectionQuestionData
{
    public int sectionId { get; set; }
    public string sectionDesc { get; set; }
    public int sectionSerNo { get; set; }
    public List<QuestionData> questionData1 { get; set; }
}

public class QuestionData
{
    public int questionId { get; set; }
    public string questionDesc { get; set; }
    public int questionSerNo { get; set; }
    public int selectAns { get; set; }
    public IEnumerable<ControlData> controlData { get; set; }
}

public class ControlData
{ 
    public string controlType { get; set; }
    public string controlAnswMap { get; set; }
    public int controlQuesMap { get; set; }
    public int controlId { get; set; }
    public string controlDesc { get; set; }
    public int controlMinValue { get; set; }
    public int controlMaxValue { get; set; }
    public int controlSerNo { get; set; }
    public int controlValue { get; set; }
    public string versionNo { get; set; }
    public string attr1 { get; set; }
    public string attr2 { get; set; }
    public string attr3 { get; set; }
    public string attr4 { get; set; }
    public string attr5 { get; set; }
    public string attr6 { get; set; }
    public string attr7 { get; set; }
    public string attr8 { get; set; }
    public string attr9 { get; set; }
    public string attr10 { get; set; }
    public string answer { get; set; }
    public string statusFalg { get; set; }
    public DateTime initiatedDate { get; set; }
    public DateTime updateDate { get; set; }
    public DateTime submitDate { get; set; }
}


View:
@model  List<MSIL.Service.FeedbackCard.Models.CardQuestionData>

@using(Html.BeginForm("CardQuestions", "CardData", FormMethod.Post))
{
<div id="example" class="form-group">

<section class="well">
    <div>
        @{ foreach (var xx in Model)
            {
                @Html.HiddenFor(model => xx.cardId)
                for (int i = 0; i < xx.sectionData.Count(); i++)
                {
                    @Html.HiddenFor(model => xx.sectionData[i].sectionId)
                    @Html.DisplayFor(model => xx.sectionData[i].sectionDesc)

                    for (int j = 0; j <    xx.sectionData[i].questionData1.Count; j++)
                    {
                        @Html.HiddenFor(model => xx.sectionData[i].questionData1[j].questionId)
                        @Html.DisplayFor(model => xx.sectionData[i].questionData1[j].questionId)
                        @Html.DisplayFor(model => xx.sectionData[i].questionData1[j].questionDesc)

                        foreach (var ans in xx.sectionData[i].questionData1[j].controlData)
                        {
                            <div>
                                @Html.HiddenFor(model => ans.controlId)
                                @Html.RadioButtonFor(model => xx.sectionData[i].questionData1[j].selectAns, ans.controlId, new { id = ans.controlId })
                            </div>
                        }
                    }
                }
            }
        }


        <div class="clearfix"></div>

        <div class="buttons-wrap">
            <button class="k-button k-state-default" type="submit"   value="Previous" name="butCardData">Previous</button>
            <button class="k-button k-state-default" type="submit" value="Next" name="butCardData">Next</button>
        </div>
    </div>
</section>
</div>
}

Controller :
public ActionResult CardQuestions(CardQuestionData objQuestionsList, string butCardData, FormCollection frmx)
        {
}

2 个答案:

答案 0 :(得分:0)

您正在视图中发送一个对象列表,但在发布时您希望有一个对象:

@model  List<MSIL.Service.FeedbackCard.Models.CardQuestionData>


public ActionResult CardQuestions(CardQuestionData objQuestionsList, string butCardData, FormCollection frmx)
    {

}

如果您想提交一份清单,我无法理解您需要提交的内容,请使用行动结果列表。

答案 1 :(得分:0)

到目前为止,我看了你的代码,看起来没问题。我想你忘了把属性放在那个

请将[HttpPost]属性放在控制器方法上。