gpt4 book ai didi

c# - Html.BeginForm 不向 Controller 返回值

转载 作者:行者123 更新时间:2023-11-30 20:43:37 24 4
gpt4 key购买 nike

为什么这会向 Controller 返回空值?复选框项目正在显示,但当我选择要保存的项目时, Controller 操作中的项目为空。

在 View 中

@model List<SearchOptionsViewModel>  
@using (Html.BeginForm("Save","Query", FormMethod.Post))
{
@Html.AntiForgeryToken()
<li id="li_15">
<div>
<p class="padding" />
@foreach (var item in Model)
{
<div>
@Html.CheckBoxFor(x => item.Selected)
@Html.HiddenFor(x => item.Value)
@Html.DisplayFor(x => item.Text)
</div>
}
</div>
</li>
<p>
<input type="submit" value="Save" />
</p>
}

行动

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Save(List<SearchOptionsViewModel> param)
{
foreach (var item in param)
{
// Do stuff
}
}

查看模型

public class SearchOptionsViewModel
{
public string Text { get; set; }
public string Value { get; set; }
public bool Selected { get; set; }
}

最佳答案

您需要为 HTML Helper 提供一个数字索引器(来自 for 循环)。如果您使用 foreach,您将无法理解。这是因为您希望 HTML Helpers 以 foo[1].Value 形式呈现,以便模型解析器可以正确地将 POSTed HTML 表单字段值转换为您的强类型集合(这是您的 View 模型):

@for( int i = 0; i < this.Model.Count; i++ )
{
<div>
@Html.CheckBoxFor( m => m[i].Selected)
@Html.HiddenFor( m => m[i].Value)
@Html.DisplayFor( m => m[i].Text)
</div>
}

关于c# - Html.BeginForm 不向 Controller 返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30364558/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com