gpt4 book ai didi

c# - 在 MVC 中使用 DropDownList 中的选定项

转载 作者:太空宇宙 更新时间:2023-11-03 23:23:51 26 4
gpt4 key购买 nike

我正在尝试使用用户从 DropDownList 中选择的项目在我的数据库表中创建一个与 DropDownList 项目相关/链接的新条目?(不确定措辞是否正确)。
这是我的模型

public class TaskInstance
{
public int Id { get; set; }
public DateTime DueDate { get; set; }
public int HowMany { get; set; }
public Task TaskId { get; set; }

public virtual Task Task { get; set; }
}
public class TaskInstanceViewModel
{
[DataType(DataType.DateTime)]
public DateTime DueDate { get; set; }
public int HowMany { get; set; }
public IEnumerable<SelectListItem> TaskList { get; set; }

public virtual ICollection<Task> Task { get; set; }
}
public class Task
{
public Task()
{
TaskInstance = new HashSet<TaskInstance>();
}
public int Id { get; set;}
public string Name { get; set; }
public string Unit { get; set; }

public virtual ICollection<TaskInstance> TaskInstance { get; set; }
}

Controller

public ActionResult Create()
{
var model = new TaskInstanceViewModel();
model.TaskList = db.Task.ToList().Select(x => new SelectListItem
{
Value = x.Id.ToString(),
Text = x.Name
}).ToList();

return View(model);
}
// POST: TaskInstances/Create
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(TaskInstanceViewModel model)
{
if (ModelState.IsValid)
{
var taskinstance = new TaskInstance { DueDate = model.DueDate };
db.TaskInstance.Add(taskinstance);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(model);
}

View - 我认为这是我唯一需要展示的,其他的只是字段

@Html.DropDownListFor(x => Model.TaskList, (SelectList)Model.Task)

在 Controller 上它说 var taskinstance = new TaskInstance { DueDate = model.DueDate }; 将是我需要使用用户选择的项目的地方,但我不知道如何获得它,我浏览了很多帖子,但其中大部分只是首先如何制作 DropDownList,而不是如何使用它(作为到另一个表的链接)和一个新的数据库条目。

我还想提一下,我对 MVC 还是个新手,所以如果我以错误的方式进行操作,请随时指出

最佳答案

添加一个 int 类型的新属性来存储从下拉列表中选择的任务。请记住, View 模型是特定于 View 的。因此,在 View 模型中只保留 View 中绝对需要的那些属性。

public class TaskInstanceViewModel
{
public DateTime DueDate { get; set; }
public int HowMany { get; set; }
public IEnumerable<SelectListItem> TaskList { get; set; }
public int SelectedTask {set;get;} // new property
}

在你看来

@model TaskInstanceViewModel
@using(Html.BeginForm())
{
<label> How many</label>
@Html.TextBoxFor(s=>s.HowMany)
<label>Due date</label>
@Html.TextBoxFor(s=>s.DueDate)
<label>Task</label>
@Html.DropDownListFor(s => s.SelectedTask, Model.TaskList)

<input type="submit" />
}

并且在您的 HttpPost 操作中,您可以使用 SelectedTask 属性值,该属性值将具有所选任务的 ID

[HttpPost]
public ActionResult Create(TaskInstanceViewModel model)
{
if (ModelState.IsValid)
{
var taskinstance = new TaskInstance { DueDate = model.DueDate ,
TaskId=model.SelectedTask };
db.TaskInstance.Add(taskinstance);
db.SaveChanges();
return RedirectToAction("Index");
}
model.TaskList = db.Task.ToList().Select(x => new SelectListItem
{
Value = x.Id.ToString(),
Text = x.Name
}).ToList();
return View(model);
}

关于c# - 在 MVC 中使用 DropDownList 中的选定项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34477390/

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