gpt4 book ai didi

c# - 添加 Controller 以编辑配置文件

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

我目前正在编写一个小型内部网页。它使用 Entity Framework 在列表中显示员工及其基本详细信息,以与我的数据库交互并创建“员工”类。我目前正在添加逻辑以允许用户编辑他们的个人资料。我目前的问题:

  • 表单仅在从本地主机导航到时才有效;使用PC-NAME/WebAddress 导致 404。这可能是什么原因造成的?我怎样才能解决这个问题 ?
  • 表格是空的;我想编辑配置文件 id=1 的用户例如,所有的输入框都显示出来了,但是都是空的所以你需要再次输入他们的所有信息。我该怎么做才能添加此功能?
  • 访问权限不限于管理员和个人资料的所有者(您的
    当前域登录 == 我的用户数据库中的“domainAC”列应该被允许编辑帐户,而不是其他方式)。这里最好的解决方案是什么?

如果您能帮助解决这些问题,我们将不胜感激。

这是我当前的设置/信息流:

使用 HTML/Razor 显示用户:(index.cshtml)

    <table id="employeeTable">
<thead>
<tr>
<th>Name</th>
<th>Branch</th>
<th>Phone No.</th>
<th>Extension</th>
<th>Email</th>
</tr>
</thead>
<tbody>
@foreach (var prod in Model)
{
<tr>
<td>@prod.FullName</td>
<td>@prod.Branch</td>
<td class="js-phoneNumbers">@prod.PhoneNo</td>
<td>@prod.Extension</td>
<td>@prod.Email</td>
@if (User.IsInRole(@"Admins") || User.Identity.Name == prod.DomainAC)
{
<td><a href="/home/edit/@prod.Id" style="color: blue;">edit</a></td>
}
else
{
<td>User => @User.ToString()</td>
}
<td>
<input type="checkbox" name="message" value="@prod.PhoneNo">Message<br>
</td>
</tr>
}
</tbody>
</table>

家庭 Controller .cs:

namespace App1.Controllers
{
public class HomeController : Controller
{

protected edmxDatabase entities = new edmxDatabase();

protected override void Dispose(bool disposing)
{
entities.Dispose(); //what does this do? It was made by default
base.Dispose(disposing);
}

public ActionResult Index()
{
var products =
from p in entities.Employees
orderby p.Branch descending
select p;

return View(products);
}
[HttpGet]
public ActionResult Edit(int id = -1)
{
var employee= new Employee();

if (employee == null)
{
return HttpNotFound();
}

return View(employee);
}
}
}

编辑.cshtml:

@model App1.Models.Employee

@{
ViewBag.Title = "Edit";
}
@using (Html.BeginForm())
{
<fieldset>
<legend>Employee</legend>

<div class="editor-label">
@Html.LabelFor(model => model.FullName)
</div>
<div class="editor-field">
@Html.TextBoxFor(model => model.FullName)
</div>
<br/>

<div class="editor-label">
@Html.LabelFor(model => model.Branch)
</div>
<div class="editor-field">
@Html.TextBoxFor( model => model.Branch )
</div>
<br/>

<div class="editor-label">
<div style="float: left;">
@Html.LabelFor(model => model.DomainAC)
</div>
@Html.TextBoxFor(model => model.DomainAC)
</div>
<br/>

<div class="editor-label">
@Html.LabelFor(model => model.PhoneNo)
</div>
<div class="editor-field">
@Html.TextBoxFor( model => model.PhoneNo)
</div>
<br/>

<input type="submit" value="Edit Employee details" />

</fieldset>
}

最佳答案

The forms will only work when navigated to from localhost;

在 index.chtml 中使用 url helper:

href="@Url.Action("Edit", "Home", new { id = prod.Id })"

The forms are empty;

你应该在 Controller 中填充你的模型:

        [HttpGet]
public ActionResult Edit(int id = -1)
{
var employee = new Employee(); // here you should to get user data for editing instead of creating empty model

if (employee == null)
{
return HttpNotFound();
}

return View(employee);
}

Access is not restricted to admins and the owner of the profile

这种情况的最佳解决方案是为 CRUD 操作实现自定义自动化属性。阅读更多 herehere 之后.

关于c# - 添加 Controller 以编辑配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17855958/

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