gpt4 book ai didi

asp.net-mvc - Html.BeginForm 在 Controller 中调用正确的操作

转载 作者:行者123 更新时间:2023-12-01 18:58:21 24 4
gpt4 key购买 nike

与这个问题相关的主题有很多,但我仍然没有弄清楚我做错了什么。

我有一个数据库,用于管理不同用户对文件夹的访问。在我的 View 中,用户可以选择应有权访问特定文件夹的员工。然后我想将选定的员工传递给 Controller ​​,数据库将在 Controller 中更新。

我的问题是: Controller 类中的正确操作没有被调用。(我里面有一个断点)

这是 View

@model DataAccessManager.Models.EmployeeSelectionViewModel
@{
ViewBag.Title = "GiveAccessTo";
}

@using (Html.BeginForm("SubmitSelected", "FolderAccessController", FormMethod.Post, new { encType = "multipart/form-data"}))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
@Html.HiddenFor(model => model.fr_folder_uid_fk)
<div class="form-horizontal">
<input type="submit" value="Save" id="submit" class="btn btn-default" />

<table id="tableP">
<thead>
<tr>
<th>Selection</th>
<th>Second Name</th>
<th>First Name</th>
<th>Department</th>
</tr>
</thead>
<tbody id="people">
@Html.EditorFor(model => model.People)
</tbody>
</table>

</div>
</div>
</div>
}

这是 Controller 减少到最小

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult SubmitSelected(EmployeeSelectionViewModel model)
{
return View();
}

更多详细信息:我不确定导致问题的原因,因此这里有一些更多详细信息。该 View 强类型化为EmployeeSelectionViewModel,它将包含所有员工的表表示为列表,代码如下:

public class EmployeeSelectionViewModel
{
public List<SelectEmployeeEditorViewModel> People { get; set; }
public EmployeeSelectionViewModel()
{
this.People = new List<SelectEmployeeEditorViewModel>();
}

public Int64 fr_folder_uid_fk { get; set; }

public IEnumerable<string> getSelectedIds()
{
// Return an Enumerable containing the Id's of the selected people:
return (from p in this.People where p.Selected select p.fr_mavnr_fk).ToList();
}
}

SelectEmployeeEditorViewModel 表示包含所有员工的表的一行。

public class SelectEmployeeEditorViewModel
{
public bool Selected { get; set; }

public string fr_mavnr_fk { get; set; }
public string firstName { get; set; }
public string secondName { get; set; }
public string dpt { get; set; }
}

它有一个为每个员工创建复选框的 View

@model DataAccessManager.Models.SelectEmployeeEditorViewModel
<tr>
<td style="text-align:center">
@Html.CheckBoxFor(model => model.Selected)
@Html.HiddenFor(model => model.fr_mavnr_fk)
</td>
<td>
@Html.DisplayFor(model => model.secondName)
</td>
<td>
@Html.DisplayFor(model => model.firstName)
</td>
<td>
@Html.DisplayFor(model => model.dpt)
</td>
</tr>

当我按下“提交”按钮时,浏览器中会调用/FolderAccessController/SubmitSelected URL,但如前所述,不会调用该操作。

编辑:按下按钮后出现 HTTP 404 未找到错误

最佳答案

尝试从 Html.BeginForm() 第二个参数中删除“Controller”一词,这是不需要的。

@using (Html.BeginForm("SubmitSelected", "FolderAccess", FormMethod.Post, new { encType = "multipart/form-data"}))

关于asp.net-mvc - Html.BeginForm 在 Controller 中调用正确的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35994241/

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