gpt4 book ai didi

c# - 带有文本输入字段的 MVC 对复选框

转载 作者:太空宇宙 更新时间:2023-11-03 19:03:46 25 4
gpt4 key购买 nike

我希望有如下内容:

@foreach(var option in ViewBag.OptionsAvailable)
{
//the 'option' variable will be used in these fields, of course
<input type='checkbox' name='thingToUse' />
<input type='text' name='textToSaveForThing' />
}

ViewBag.OptionsAvailable 可以是可变长度。 我想采用这些选项之一,如果选中了它的复选框,则使用保存的值将其添加到 Model.Options这里的想法是,在 HttpPost Controller 方法,如果选中相应的复选框,我只想确认/保存文本框中的值。解决这个问题的最佳方法是什么?

我遇到了 this explanation绑定(bind)到列表,但我不确定如何在此基础上发展以创建我想要的东西。

最佳答案

首先创建一个 View 模型来表示您想要显示/编辑的内容

public class OptionVM
{
public string Text { get; set; }
public bool IsSelected { get; set; }
public string Answer { get; set; }
.... // other properties
}

然后在 Controller 中,初始化您的 View 模型的集合并将其传递给 View

public ActionResult Edit()
{
List<OptionVM> model = new List<OptionVM>();
.... // populate it
return View(model);
}

和 View

@model List<yourAssembly.OptionVM>
@using (Html.BeginForm())
{
for (int i = 0; i < Model.Count; i++)
{
<label>
@Html.CheckBoxFor(m => m[i].IsSelected)
<span>@Model[i].Text</span>
</label>
@Html.TextBoxFor(m => m[i].Answer)
@Html.ValidationMessageFor(m => m[i].Answer)
}
<input type="submit" ... />
}

并提交给

public ActionResult Edit(List<OptionVM> model)
{
// for example, get the answers where the checkbox has been selected
var selectedAnswers = model.Where(m => m.IsSelected).Select(m => m.Answer);
}

您可以使用 foolproof 来增强它[RequiredIfTrue] 或应用于 Answer 属性的类似验证属性,以确保在选中相应的复选框时文本框具有值

关于c# - 带有文本输入字段的 MVC 对复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31949361/

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