Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 模型绑定列表MVC3不读取变量_Asp.net Mvc 3_List_Binding_Model_Action - Fatal编程技术网

Asp.net mvc 3 模型绑定列表MVC3不读取变量

Asp.net mvc 3 模型绑定列表MVC3不读取变量,asp.net-mvc-3,list,binding,model,action,Asp.net Mvc 3,List,Binding,Model,Action,我读过一些帖子,但我仍然觉得很难解决这个问题。我的问题是,我的操作只读取绑定列表中的一些值。以下是我将列表发送到视图的方式: public ActionResult RegisterSurvey() { RegisterSurveyModel model = new RegisterSurveyModel(); var questions = new List<QuestionModel>(); var survey = EF

我读过一些帖子,但我仍然觉得很难解决这个问题。我的问题是,我的操作只读取绑定列表中的一些值。以下是我将列表发送到视图的方式:

public ActionResult RegisterSurvey()
    {
        RegisterSurveyModel model = new RegisterSurveyModel();

        var questions = new List<QuestionModel>();
        var survey = EFSurvey.Survey.FirstOrDefault();
        survey.QuestionSurvey
            .Where(x => x.AuditingDeleted == false)
            .Where(x => x.Active == true).ToList().ForEach((item) =>
            {
                var questionModel = new QuestionModel();
                ModelCopier.CopyModel(item, questionModel);
                questionModel.Answer = string.Empty;

                questions.Add(questionModel);

            });
        model.Questions = questions;
        return View(model);
    }
public ActionResult RegisterSurvey()
{
RegisterSurveyModel model=新的RegisterSurveyModel();
var questions=新列表();
var-survey=EFSurvey.survey.FirstOrDefault();
问卷调查
.Where(x=>x.AuditingDeleted==false)
.Where(x=>x.Active==true).ToList().ForEach((项)=>
{
var questionModel=新的questionModel();
CopyModel(项目,问题模型);
questionModel.Answer=string.Empty;
添加(问题模型);
});
模型问题=问题;
返回视图(模型);
}
这是我的模型:

public class RegisterSurveyModel
{
    public List<QuestionModel> Questions { get; set; } 
}

public class QuestionModel
{
    public int QuestionSurveyID { get; set; }
    public string Question { get; set; }
    public string Answer { get; set; }
    public bool Suggestion { get; set; }
}
公共类注册表SurveyModel
{
公共列表问题{get;set;}
}
公共类问题模型
{
public int QuestionSurveyID{get;set;}
公共字符串问题{get;set;}
公共字符串答案{get;set;}
公共布尔建议{get;set;}
}
我的看法是:

<div class="SiteSurveyContainer">
@using (Html.BeginForm())
{
    <div class="SurveyUp">
        @for (int i = 0; i < Model.Questions.Count(); i++)
        {
            if (!Model.Questions[i].Suggestion)
            {
            <p>@Model.Questions[i].Question</p>
            @Html.HiddenFor(x => Model.Questions[i].QuestionSurveyID);
            @Html.TextBoxFor(x => Model.Questions[i].Answer, new { @class = "surveyBox" });
            }
        }
    </div>
    <div class="SurveyBottom">
        <div class="line">
        </div>
        <p>
            Suggestions</p>
        @for (int i = 0; i < Model.Questions.Where(x => x.Suggestion == true).Count(); i++)
        {
            @Html.HiddenFor(x => Model.Questions[i].QuestionSurveyID);
            @Html.TextAreaFor(x => Model.Questions[i].Answer, new { @class = "surveyTextArea" })
        }
    </div>
    <div class="surveyBottomButton">
        <input type="submit" value="Submit Results" />
    </div>
}

@使用(Html.BeginForm())
{
@for(int i=0;i
@Html.HiddenFor(x=>Model.Questions[i].QuestionSurveyID);
@TextBoxFor(x=>Model.Questions[i]。答案,新的{@class=“surveyBox”});
}
}

建议

@对于(int i=0;ix.Suggestion==true).Count();i++) { @Html.HiddenFor(x=>Model.Questions[i].QuestionSurveyID); @Html.TextAreaFor(x=>Model.Questions[i]。答案,新{@class=“surveyTextArea”}) } }

到目前为止还不错。无论如何,当我回答所有的调查问题时,我只得到了前4个答案。。。奇怪的有人知道为什么会这样吗


同一表单中有多个输入控件,它们的名称相同


建议问题是所有问题的子集,因此在同一表格中重复两次。这将扔掉ModelBinder,因此您的接收操作可能只是看到没有重复的问题。

是的,我一分钟前在查看生成的标记时才意识到这一点。但是,我也不知道为什么,第一组中的if语句某种程度上阻止了绑定,所以我所做的是将一个列表中的正常问题与另一个列表中的建议问题分开,而不是将它们全部放在一个列表中并进行过滤。这使得装订工作正常。