ASP.NET Mvc开发之删除修改数据

ASP.NET Mvc开发之删除修改数据

在ASP.NET Mvc开发中,删除修改数据是非常常见的操作。本文将分享一些实现这些操作的完整攻略。

删除数据

确认删除

在进行删除操作时,需要先向用户确认是否真的要删除该条数据。为此,我们可以使用JavaScript弹出确认框。以下是一个示例:

function confirmDelete(url) {
  if (confirm("确定要删除这条记录吗?")) {
    window.location = url;
  }
}

该函数接受一个参数url,表示要跳转到的删除操作的URL地址。当用户点击确认删除时,该函数会跳转到该URL地址。我们可以通过如下方式在视图中调用该函数:

<a href="#" onclick="confirmDelete('@Url.Action("Delete", new { id = item.Id})')">删除</a>

其中,item.Id表示要删除的数据的ID,@Url.Action("Delete", new { id = item.Id})生成了一个对应删除操作的URL地址。

删除操作

在MVC框架中,删除操作通常在控制器中实现。以下是一个示例控制器的代码:

public class DeleteController : Controller
{
    private readonly MyDbContext _dbContext;

    public DeleteController(MyDbContext dbContext)
    {
        _dbContext = dbContext;
    }

    [HttpPost]
    public async Task<IActionResult> Index(int id)
    {
        var data = await _dbContext.MyData.FindAsync(id);
        if (data == null)
            return NotFound();

        _dbContext.MyData.Remove(data);
        await _dbContext.SaveChangesAsync();

        return RedirectToAction("Index");
    }
}

该控制器接受一个id参数,表示要删除的数据的ID。它先通过调用_dbContext.MyData.FindAsync(id)方法找到对应的数据,如果不存在则返回404错误。接着,调用_dbContext.MyData.Remove(data)删除数据,并通过调用_dbContext.SaveChangesAsync()方法保存更改。最后,返回一个重定向操作,将用户重定向到数据列表页面。

修改数据

编辑页面

在进行修改操作时,需要先向用户展示一个数据编辑页面。以下是一个示例:

@model MyData

<h2>编辑数据</h2>

<form asp-action="Edit" asp-route-id="@Model.Id" method="post">
    <div class="form-group">
        <label asp-for="Name" class="control-label"></label>
        <input asp-for="Name" class="form-control" />
    </div>
    <div class="form-group">
        <label asp-for="Age" class="control-label"></label>
        <input asp-for="Age" class="form-control" />
    </div>
    <button type="submit" class="btn btn-primary">保存</button>
</form>

该页面接受一个MyData类型的数据模型,并展示该数据模型的各种属性。用户可以修改这些属性并点击保存按钮提交更改。

修改操作

在MVC框架中,修改操作通常在控制器中实现。以下是一个示例控制器的代码:

public class EditController : Controller
{
    private readonly MyDbContext _dbContext;

    public EditController(MyDbContext dbContext)
    {
        _dbContext = dbContext;
    }

    [HttpGet]
    public async Task<IActionResult> Index(int id)
    {
        var data = await _dbContext.MyData.FindAsync(id);
        if (data == null)
            return NotFound();

        return View(data);
    }

    [HttpPost]
    public async Task<IActionResult> Index(int id, MyData newData)
    {
        if (id != newData.Id)
            return BadRequest();

        _dbContext.Entry(newData).State = EntityState.Modified;
        await _dbContext.SaveChangesAsync();

        return RedirectToAction("Index");
    }
}

该控制器包含两个操作方法。HttpGet方法用于展示数据编辑页面,接受一个id参数表示要编辑的数据的ID,通过调用_dbContext.MyData.FindAsync(id)方法找到对应的数据并将其传递给视图。HttpPost方法用于处理用户修改的数据,并将更改保存到数据库中。它接受一个id参数表示要修改的数据的ID,以及一个newData参数表示用户修改后的数据。该方法首先判断id参数和newData参数的ID是否一致,如果不一致则返回400错误。接着,将newData数据模型的状态设置为修改状态,并通过调用_dbContext.SaveChangesAsync()保存更改。最后,返回一个重定向操作,将用户重定向到数据列表页面。

示例说明

示例1:删除数据

例如,我们有一个学生信息查询页面,用户可以通过该页面查看所有学生的信息。每个学生都有一个删除按钮,用户可以通过点击该按钮删除对应学生的信息。以下是一个该页面的示例视图代码:

@model IEnumerable<Student>

<h2>学生信息查询</h2>

<table class="table table-striped">
    <thead>
      <tr>
          <th>ID</th>
          <th>姓名</th>
          <th>年龄</th>
          <th>操作</th>
      </tr>
    </thead>
    <tbody>
    @foreach (var item in Model)
    {
        <tr>
            <td>@item.Id</td>
            <td>@item.Name</td>
            <td>@item.Age</td>
            <td>
                <a href="@Url.Action("Edit", new { id = item.Id})">编辑</a>
                <a href="#" onclick="confirmDelete('@Url.Action("Delete", new { id = item.Id})')">删除</a>
            </td>
        </tr>
    }
    </tbody>
</table>

在该视图中,我们通过调用@Url.Action方法为删除和编辑操作生成对应的URL地址,并在对应的按钮上添加了点击事件,通过JavaScript弹出确认框来确认删除操作。

以下是该页面对应的控制器代码:

public class StudentController : Controller
{
    private readonly MyDbContext _dbContext;

    public StudentController(MyDbContext dbContext)
    {
        _dbContext = dbContext;
    }

    public async Task<IActionResult> Index()
    {
        var students = await _dbContext.Students.ToListAsync();
        return View(students);
    }

    [HttpPost]
    public async Task<IActionResult> Delete(int id)
    {
        var student = await _dbContext.Students.FindAsync(id);
        if (student == null)
            return NotFound();

        _dbContext.Students.Remove(student);
        await _dbContext.SaveChangesAsync();

        return RedirectToAction("Index");
    }
}

在该控制器中,我们先通过调用_dbContext.Students.ToListAsync()方法获取所有学生的数据,并将数据传递给视图。在[HttpPost]操作中,我们通过调用_dbContext.Students.FindAsync(id)方法获取对应ID的学生数据,并将其删除并保存更改。

示例2:修改数据

例如,我们有一个学生信息管理页面,用户可以通过该页面查看和修改所有学生的信息。以下是一个该页面的示例视图代码:

@model Student

<h2>学生信息管理</h2>

<form asp-action="Edit" asp-route-id="@Model.Id" method="post">
    <div class="form-group">
        <label asp-for="Name" class="control-label"></label>
        <input asp-for="Name" class="form-control" />
    </div>
    <div class="form-group">
        <label asp-for="Age" class="control-label"></label>
        <input asp-for="Age" class="form-control" />
    </div>
    <button type="submit" class="btn btn-primary">保存</button>
</form>

在该视图中,我们同样通过调用asp-actionasp-route-id指定了对应的URL地址。用户可以修改学生的姓名和年龄,并点击保存按钮提交更改。

以下是该页面对应的控制器代码:

public class StudentController : Controller
{
    private readonly MyDbContext _dbContext;

    public StudentController(MyDbContext dbContext)
    {
        _dbContext = dbContext;
    }

    [HttpGet]
    public async Task<IActionResult> Edit(int id)
    {
        var student = await _dbContext.Students.FindAsync(id);
        if (student == null)
            return NotFound();

        return View(student);
    }

    [HttpPost]
    public async Task<IActionResult> Edit(int id, Student newStudent)
    {
        if (id != newStudent.Id)
            return BadRequest();

        _dbContext.Entry(newStudent).State = EntityState.Modified;
        await _dbContext.SaveChangesAsync();

        return RedirectToAction("Index");
    }
}

在该控制器中,我们同样通过FindAsync方法来获取对应ID的学生数据。在[HttpPost]操作中,我们将newStudent数据模型的状态设置为修改状态,然后通过SaveChangesAsync方法将更改保存到数据库中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ASP.NET Mvc开发之删除修改数据 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • jQuery–遍历操作实例小结【后代、同胞及过滤】

    jQuery–遍历操作实例小结【后代、同胞及过滤】 jQuery是一款非常强大、易用且广泛应用于前端开发的JavaScript库。它提供了多种遍历操作的方法,包括后代、同胞和过滤等。本文将详细讲解这些操作的实现方法和使用技巧。 后代选择器 后代选择器是指通过指定元素的父元素及其后代元素的标签名等信息,选取后代元素的操作。jQuery中通过空格符实现后代选择…

    jquery 2023年5月28日
    00
  • 详谈Ajax请求中的async:false/true的作用(ajax 在外部调用问题)

    Ajax请求中的async参数指的是异步请求的开关,该参数的值可以为true或false,默认值为true。该参数与请求的同步或异步方式有关。 当async为true时,表示异步请求,即发送请求后,不会等待服务器返回数据,而是立即执行后续的代码。当服务器返回数据后再回调函数中进行处理。这种方式可以提高网页的响应速度和用户体验。示例代码如下: $.ajax({…

    jquery 2023年5月27日
    00
  • jQWidgets jqxDateTimeInput getMaxDate()方法

    以下是关于“jQWidgets jqxDateTimeInput getMaxDate()方法”的完整攻略,包含两个示例说明: 方法简介 jqxDateTimeInput 控件的 getMaxDate() 方法用于获取最大日期时间。该方法的语如下: var maxDate = $("#jqxDateTimeInput").jqxDateT…

    jquery 2023年5月10日
    00
  • Ajax修改数据即时显示篇实现代码

    以下是“Ajax修改数据即时显示篇实现代码”的完整攻略。 简介 Ajax是一种用于创建快速动态网页的技术,实现了无需重载整个页面就能更新部分页面的内容。这种技术通常用于异步更新数据,这就是该篇文章要介绍的实现代码。 步骤 编写HTML代码,包含需要更新的数据和表单: <div id="data">原始数据</div&gt…

    jquery 2023年5月27日
    00
  • JQuery里选择超链接的实现代码

    JQuery是一个非常流行的JavaScript库,可以大大简化JavaScript的代码编写。选择超链接是js编写的常见任务之一,并且JQuery提供了一些简便的方法来处理这个任务。 第一步:选择器 要选择超链接,我们首先需要使用选择器来定位它们。下面是一些常见的选择器: ID选择器:$(‘#my-id’) 类选择器:$(‘.my-class’) 标签选择…

    jquery 2023年5月28日
    00
  • jQuery UI的Selectmenu change事件

    jQuery UI的Selectmenu change事件详解 jQuery UI的Selectmenu是一个下拉菜单插件,它允许用户从预定义的选项中进行选择。在本文中,我们将详细介绍Selectmenu的change事件的用法和示例。 change事件 change事件是Selectmenu插件中一个事件,它在用户选择一个新选项时触发。该事件可以用于在用户…

    jquery 2023年5月11日
    00
  • jQWidgets jqxToolBar getTools()方法

    以下是关于 jQWidgets jqxToolBar 组件中 getTools() 方法的详细攻略。 jQWidgets jqxToolBar getTools() 方法 jQWidgets jqxToolBar 组件 getTools() 方法用于获取工具栏中的所有工具。该方法不接受任何参数,返回一个包含所有工具的数组。 语法 $(‘#toolbar’).…

    jquery 2023年5月11日
    00
  • 如何使用jQuery加载更多的功能

    使用jQuery可以轻松地为网站添加更多的功能。以下是详细的攻略,演示如何使用jQuery加载更多的功能: 步骤1:引入jQuery库 在使用jQuery之前,需要先在HTML文档中引入jQuery库。可以通过以下方式引入: <script src="https://code.jquery.com/jquery-3.6.0.min.js&qu…

    jquery 2023年5月9日
    00
合作推广
合作推广
分享本页
返回顶部