【发布时间】:2013-12-11 05:56:43
【问题描述】:
我有一个在我的视图中使用的模型,它充满了数据。然后在视图中编辑此数据。我需要想办法将这些数据重新提交给控制器。
这是我目前所拥有的。
查看:
@using (Html.BeginForm("DownloadCSV", "Respondents", FormMethod.Post))
{
@Html.HiddenFor(m => m.FilterSet)
<div class="btn btn-default pull-right" id="dispoCSV" onclick="$('#csvFormSubmit').click()">
<i class="icon-file-alt"></i> Disposition Report
</div>
<input id="csvFormSubmit" type="submit" style="display:none;" />
}
控制器:
[HttpPost]
public ActionResult DownloadCSV(RespondentsFilterSet model)
{
string csv = "Charlie, Test";
return File(new System.Text.UTF8Encoding().GetBytes(csv), "text/csv", "DispositionReport.csv");
}
型号:
public class RespondentsFilterSet : ColdListFilterSet
{
public List<int> OwningRecruiters { get; set; }
public List<int> RecruitingGroups { get; set; }
public override bool HasAtLeastOneFilter()
{
return base.HasAtLeastOneFilter() || OwningRecruiters.IsNotNullOrEmpty() || RecruitingGroups.IsNotNullOrEmpty();
}
public override ExpressionBase ToExpression()
{
var expr = base.ToExpression();
var expressions = expr == null ? new List<ExpressionBase>() : new List<ExpressionBase> { expr };
if (OwningRecruiters.IsNotNullOrEmpty())
{
expressions.Add(new InExpression<int> { Field = Create.Name<Respondent>(r => r.RecruitedBy), Values = OwningRecruiters });
}
if (RecruitingGroups.IsNotNullOrEmpty())
{
expressions.Add(new InExpression<int> { Field = Create.Name<Respondent>(r => r.RecruitingGroupId), Values = RecruitingGroups });
}
return expressions.Count == 0 ? null : BuildAndExpressionFromList(expressions);
}
}
我意识到我的控制器尚未最终确定。我只是显示了一些静态 csv。但是我无法弄清楚为什么我的模型在返回到控制器时总是为空。
【问题讨论】:
-
您正在编辑的哪些字段没有返回?如果你想展示它,有时视图模型中会出现错误。
-
发布您的模型也可以帮助我们确定问题。
-
我没有得到任何字段。它只是空的。就好像来自视图的模型为空一样。情况并非如此,因为我可以在视图中很好地使用模型。 @Model.FilterSet.Genders[0] 工作正常
-
您使用的是哪种型号? RespondentsFilterSet 或 RespondentsViewModel(控制器参数)
-
RespondentsFilterSet 抱歉忘记在控制器方法中进行编辑。
标签: c# asp.net-mvc