如何在MVC的单个视图中添加编辑,删除和搜索功能?

时间:2013-04-22 06:20:08

标签: asp.net-mvc asp.net-mvc-3 razor html-helper

我是MVC的新手。

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

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

我有homeController Index ActionMethod。与之对应我在View中有View/home/Index,只显示员工的列表。

我知道我可以在[HTTP POST] Index ActionMethod中添加homeController

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

我不知道如何才能推进此功能。

我仍在使用此代码。

homeController

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

Index.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>

感谢。

2 个答案:

答案 0 :(得分: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");
}

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

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");
}

答案 1 :(得分:0)

您可以在控制器中添加并实施Delete操作方法。然后在您的视图中,请致电@Html.ActionLink("Delete", "Delete", new { id = item.empno })。这将返回一个链接到控制器中Delete方法的超链接。