我目前正在编写一个小型的 Intranet 页面。它使用实体框架在列表中显示员工及其基本详细信息,以与我的数据库交互并创建一个“员工”类。我目前正在添加逻辑以允许用户编辑他们的个人资料。我目前的问题:
- 这些表单仅在从 localhost 导航到时才有效;使用 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>
HomeController.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>
}