c# - 如何从方法中的对象中检索值以在另一个方法中使用它?
问题描述
我知道这个问题已经问了很多时间,但它似乎对我不起作用。你能帮忙或提供一个类似问题的链接吗?
我有一个对象“ws”,我想捕获WorkShiftID,以便在 CreateSharedView 中使用它。
Ps:对不起我的英语,我是c#的新手,所以请多多包涵。谢谢
编辑:我想从 Create 中检索 ws.WorkShiftId 以将其放入 CreateSharedView 中的 task.WorkShiftId 中。可能吗?
public IActionResult Create()
{
ViewData["HoleId"] = new SelectList(_context.Hole, "HoleId", "HoleName");
ViewData["SupplierId"] = new SelectList(_context.Supplier, "SupplierId", "SupplierName");
ViewData["SurveyLocationId"] = new SelectList(_context.SurveyLocation, "SurveyLocationId", "SurveyLocation1");
ViewData["ZoneId"] = new SelectList(_context.Zone, "ZoneId", "ZoneName");
return View();
}
// POST: WorkShiftDetailViewModels/Create
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create(WorkShiftDetailViewModel workShiftDetailViewModel)
{
if (!ModelState.IsValid)
{
WorkShift ws = new WorkShift();
ws.StartDay = workShiftDetailViewModel.StartDay;
ws.EndDay = workShiftDetailViewModel.EndDay;
ws.SupplierId = workShiftDetailViewModel.SupplierId;
ws.SurveyLocationId = 1;
ws.ZoneId = workShiftDetailViewModel.ZoneId;
ws.HoleId = workShiftDetailViewModel.HoleId;
_context.Add(ws);
await _context.SaveChangesAsync();
foreach (WorkerViewModel member in workShiftDetailViewModel.WorkShiftEmployees)
{
if (member.isDeleted == false) {
WorkShiftTeam emp = new WorkShiftTeam();
emp.EmployeeId = member.EmployeeId;
emp.RoleId = member.RoleId;
emp.WorkShiftId = ws.WorkShiftId;
test = ws.WorkShiftId;
_context.Add(emp);
}
}
return RedirectToAction(nameof(CreateSharedView));
}
public IActionResult CreateSharedView()
{
ViewData["TaskId"] = new SelectList(_context.Task, "TaskId", "TaskDescription");
ViewData["WorkShiftTaskId"] = new SelectList(_context.WorkShift, "WorkShiftId", "WorkShiftId");
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> CreateSharedView(SharedViewModel sharedViewModel,
SurveyViewModel surveyViewModel,
WorkShiftTask task)
{
if (ModelState.IsValid)
{
WorkShiftTask task = new WorkShiftTask();
task.WorkShiftTaskId = sharedViewModel.WorkShiftTaskId;
task.TaskId = sharedViewModel.TaskId;
_context.Add(task);
await _context.SaveChangesAsync();
}
return View(sharedViewModel);
}```
解决方案
CreateSharedView POST 方法基本上只是将 WorkShiftTask 添加到数据库中。因此,与其胡乱尝试从另一个调用一个 POST 方法,不如从 Create() 方法内部执行此操作:
foreach (WorkerViewModel member in workShiftDetailViewModel.WorkShiftEmployees)
{
if (member.isDeleted == false)
{
WorkShiftTeam emp = new WorkShiftTeam();
emp.EmployeeId = member.EmployeeId;
emp.RoleId = member.RoleId;
emp.WorkShiftId = ws.WorkShiftId;
// test = ws.WorkShiftId; test? no. defined where?
_context.Add(emp);
WorkShiftTask task = new WorkShiftTask();
task.WorkShiftId = ws.WorkShiftId; // There's the ws.WorkShiftId you were mentioning...
// set other members of "task"
_context.Add(task);
await _context.SaveChangesAsync();
}
}
推荐阅读
- reactjs - react-apexcharts 中的 CSS
- c# - Automapper - 使 IncludeMembers() 忽略 null
- python - 使用 ursina 在屏幕上显示图像
- xamarin - embedio - 在 xamarin 应用程序中使用 embedio 发布 pdf - 状态正常,但流为 0
- arduino - 关于低功耗蓝牙作为建筑物或校园室内接近传感器的一些问题
- c - 如何在 Linux 平台上从 C 代码访问 Delphi 函数/过程
- python - 从当前模块导入方法
- c# - 序列化内部类
- flutter - Flutter - 如何将文本放在文本的右上方?
- google-chrome-devtools - chrome devtools 中的这个是什么?