gpt4 book ai didi

asp.net-mvc - 将列表从 View 提交到 Controller

转载 作者:行者123 更新时间:2023-12-02 07:05:24 26 4
gpt4 key购买 nike

任何人都可以告诉我在 mvc3-asp 中从 View 到 Controller 单击按钮时发布列表的代码。我有一个列表,其中一个列表元素是复选框。首先我必须从列表中选择一些值,然后提交它以仅保存选定的值。

最佳答案

您的问题有两个广泛的答案。所以我会给你一个通用的例子,你需要根据你的场景进行定制。

假设您的观点是将一些任务分配给用户。可以为每个用户分配一个或多个任务。

所以我将创建一个像这样的 View 模型。

public class UserViewModel 
{
public int UserId { set;get;}
public string Name { set;get;}
public List<Task> Tasks { set;get;}
public UserViewModel()
{
Tasks=new List<UserTask>();
}
}
public class UserTask
{
public int ID { set;get;}
public string Name { set;get;}
public bool IsSelected { set;get;}
}

现在在您的 GET 操作中,您创建一个 UserViewModel 对象并将 Tasks 属性设置为可用任务列表(可能来自您的数据库)

public ActionResult Add()
{
var vm=new UserViewModel();
vm.Tasks=GetAvailableTasks();
return View(vm);
}

假设 GetAvailableTasks 是一个返回 UserTask 对象列表的方法。

现在创建一个编辑器模板。转到您的 ~/Views/YourControllerName 文件夹并创建一个名为 EditorTemplates 的文件夹。将新 View 添加到新创建的文件夹,并将名称命名为 Task.cshtml。添加以下代码

@model YourNameSpace.UserTask
<p>
@Html.CheckBoxFor(x => x.IsSelected) Model.Name
@Html.HiddenFor(x => x.ID)
</p>

现在回到您的主视图并使用 EditorFor 辅助方法来引入 EditorTemplate。

@model YourNamespace.UserViewModel
<h2>Quiz 24</h2>
@using (Html.BeginForm())
{
@Html.EditorFor(x=>x.Tasks)
<input type="submit" />
}

现在当表单被提交时,您可以像这样获取选中的复选框值

[HttpPost]
public ActionResult Save(UserViewModel model)
{
List<int> taskIds=new List<int>();
foreach (var task in model.Tasks)
{
if (task.IsSelected)
{
//you can get the selected task id's here.
taskIds.Add(task.ID);
}
}
//to do : save and redirect (PRG pattern)
}

Here是一篇解释如何使用 EditorTemplates 处理表单提交集合的博文。该帖子显示了一个处理单选按钮的示例。

关于asp.net-mvc - 将列表从 View 提交到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12888248/

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