2

我是新手MVC

在 MSDN 上,我研究过应该有view同名的文件夹controller。对于其中的每一个Action Methodcontroller我们必须View在同一个文件夹中创建一个。

我正在创建一个测试应用程序,其中:

我有homeController一个Index ActionMethod. 对应于它,我有一个Viewin View/home/Index,它只是显示员工的列表。

我知道我可以[HTTP POST] Index ActionMethodhomeController.

但我想在视图上添加DeleteSearch功能。这样用户就可以搜索具有该名称的员工,并可以在同一页面上删除员工。

我不知道如何才能继续使用此功能。

我仍在使用此代码。

homeController

public ActionResult Index()
    {
        ViewBag.text = "Records Listing";
        var q = from p in objEmp.tbemployees select p;
        return View(q);
    }

索引.cshtml

        @model IEnumerable<MvcApplication6.Models.tbemployee>
@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
<h1>@ViewBag.text</h1>
<table style="font-size:15px;">
    <tr>
        <th>
            Name
        </th>
        <th>
            Address
        </th>
        <th>
            Sallary
        </th>
    </tr>
    @foreach (var item in Model)
    {
        <tr >
            <td style="padding:7px;">
                @Html.DisplayFor(mm => item.ename)
            </td>
            <td style="padding:7px;">
              @Html.DisplayFor(mm => item.eadd)
            </td>
            <td style="padding:7px;">
              @Html.DisplayFor(mm => item.esal)
            </td>
              <td style="padding:7px; color:Blue; text-decoration:underline;">
            @Html.ActionLink("Edit", "Edit", new { id = item.empno })
            </td>

        </tr>
    }
</table>

谢谢。

4

2 回答 2

1

对于删除,您可以在表中添加一列,该列将调用控制器操作并将当前记录 ID 传递给它:

<tr>
    <td style="padding:7px;">
        @Html.DisplayFor(mm => item.ename)
    </td>
    <td style="padding:7px;">
        @Html.DisplayFor(mm => item.eadd)
    </td>
    <td style="padding:7px;">
        @Html.DisplayFor(mm => item.esal)
    </td>
    <td style="padding:7px; color:Blue; text-decoration:underline;">
        @Html.ActionLink("Delete", "Delete", new { id = item.empno })
        @Html.ActionLink("Edit", "Edit", new { id = item.empno })
    </td>
</tr>

和您的删除操作:

public ActionResult Delete(int id)
{
    ... use the passed id to delete the record from the database
    return RedirectToAction("Index");
}

对于 Edit 功能,您可以有一个控制器操作来获取记录并呈现允许编辑的视图:

public ActionResult Edit(int id)
{
    var employee = objEmp.tbemployees.FirstOrDefault(x => x.Id == id);
    if (employee == null)
    {
        // no employee with the specified id was found
        return new HttpNotFound();
    }
    return View(employee);
}

然后你可以有一个相应的~/Views/Home/Edit.cshtml视图:

@model Employee
@using (Html.BeginForm())
{
    <div>
        @Html.LabelFor(x => x.ename)
        @Html.EditorFor(x => x.ename)
    </div>
    <div>
        @Html.LabelFor(x => x.eadd)
        @Html.EditorFor(x => x.eadd)
    </div>

    ...

    <button type="submit">Save</button>
}

当然还有在提交此表单时更新记录的相应操作:

[HttpPost]
public ActionResult Edit(Employee employee)
{
    ... update the employee record
    return RedirectToAction("Index");
}
于 2013-04-22T06:25:05.190 回答
0

您可以在控制器中添加和实现Delete操作方法。然后在您看来,调用@Html.ActionLink("Delete", "Delete", new { id = item.empno }). 这将返回一个链接到Delete控制器中的方法的超链接。

于 2013-04-22T06:24:37.207 回答