【问题标题】:How to perform edit action in ASP.net Core?如何在 ASP.net Core 中执行编辑操作?
【发布时间】:2020-06-11 02:33:42
【问题描述】:

如何在 ASP.net Core 中执行编辑操作?我有以下产品详细信息视图操作代码我需要帮助创建编辑页面操作

//I产品接口

namespace Proj.Core.App.Common.Product
{    public interface IProductService
    {
        Task<IList<ProductDTO>> GetProducts();
    }
}

//产品控制器

 public class ProductController : Controller
    { 
    public IProductService ProductService { get; }
    public ProductController(IProductService ProductService)
        {
            ProductService = ProductService;
        }    
//DetailAction    
       [HttpGet()]
    public async Task<IActionResult> Detail(int id)
        {
            var ProductList= (await ProductService.GetProducts()).ToList();        
            var project = ProductList.FirstOrDefault(a => a.ID == id);
            @ViewBag.Product_Code = product.productCode;
            @ViewBag.Product_Name = product.productName;      

            return View();
        }
     }

如何为编辑页面操作创建操作?

【问题讨论】:

  • 您的问题缺少太多信息,无法正确回答。
  • Visual Studio 不是为您搭建所有这些吗?

标签: entity-framework asp.net-core model-view-controller


【解决方案1】:
    //DetailAction    
    [HttpPut()]
    public async Task<IActionResult> Put(Product model)
    {
        ..call your service or ...
        return View();
    }

【讨论】:

    【解决方案2】:

    我留下了一条评论,说这个问题确实需要更多信息才能正确回答。不过,也许下面的内容可能会帮助您入门。

    这是一个使用您已有的方法的实现。

    public async Task<IActionResult> Edit(int? id)
    {
        if (id == null)
        {
            return NotFound();
        }
    
        var productList = (await ProductService.GetProducts()).ToList();
    
        var product = productList.FirstOrDefault(a => a.ID == id);
    
        if (product == null)
        {
            return NotFound();
        }
    
        return View(product);
    }
    

    这就是典型的实体框架实现的样子。从中提取你能得到的信息。

    public async Task<IActionResult> Edit(int? id)
    {
        if (id == null)
        {
            return NotFound();
        }
    
        var product = await _context.Products.FindAsync(id);
    
        if (product == null)
        {
            return NotFound();
        }
    
        return View(applications);
    }
    
    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> Edit(Product product)
    {
        if (ModelState.IsValid)
        {
            try
            {
                _context.Update(product);
    
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ProductExists(product.Id))
                {
                    return NotFound();
                }
                else
                {
                    throw;
                }
            }
    
            return RedirectToAction(nameof(Index));
        }
    
        return View(applications);
    }
    
    private bool ProductExists(int id)
    {
        return _context.Products.Any(e => e.Id == id);
    }
    

    希望对您有所帮助。

    编码愉快!!!

    【讨论】:

    • 只是想指出,获取完整的产品列表,然后搜索单个项目的结果效率较低,只需在服务中创建 FindById 方法。
    • 谢谢马特,如何在视图中添加“保存”按钮以保存数据库中的更改
    猜你喜欢
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 2019-06-25
    • 1970-01-01
    相关资源
    最近更新 更多