【问题标题】:How can I execute an edit method for model?如何执行模型的编辑方法?
【发布时间】:2020-07-09 22:30:59
【问题描述】:

我想知道如何修改或删除(编辑异步或删除)属于同一视图的 1 或 2 个模型

就像这个例子一样

public class FruitsViewModel
 
{
    public List<Abricot> Abricots { get; set; }
 
    public List<Banane> Bananes { get; set; }
 
    public List<Citron> Citrons { get; set; }
}
@model namespace de FruitsViewModel
 
@foreach(var abricot in Model.Abricots)
{
    // Affiche les propriétés d'un abricot
}
 
    @foreach(var banane in Model.Bananes)
    {
        // Affiche les propriétés d'une banane
    }
     
    @foreach(var citron in Model.Citrons)
    {
        // Affiche les propriétés d'un citron
    }
    public ActionResult ActionController()
    {
        var vm = new FruitsViewModel();
        vm.Abricots = // Récupère les abricots depuis la base de données
        vm.Bananes = // Récupère les bananes depuis la base de données
        vm.Citrons = // Récupère les citrons depuis la base de données
     
        return View(vm);
    }





  i do like your code,there is no exception,

如果我正常点击保存按钮,banae 模型将被更改,我将写入显示此更新的索引

`enter code here` `@foreach (var banane in Model.personnels)
        {
   <form asp-action="EditBanane" method="post">
        <div asp-validation-summary="ModelOnly" class="text-danger"></div>
        <div class="form-group">
            <label asp-for="@banane.Id" class="control-label"></label>
            <input asp-for="@banane.Id" class="form-control" />
            <span asp-validation-for="@banane.Id" class="text-danger"></span>
        </div>
        <div class="form-group">
            <label asp-for="@banane.Name" class="control-label"></label>
            <input asp-for="@banane.Name" class="form-control" />
            <span asp-validation-for="@banane.Name" class="text-danger"></span>
        </div>
        <div class="form-group">
            <label asp-for="@banane.Color" class="control-label"></label>
            <input asp-for="@banane.Color" class="form-control" />
            <span asp-validation-for="@banane.Color" class="text-danger"></span>
        </div>
        <div class="form-group">
            <label asp-for="@banane.BananeP" class="control-label"></label>
            <input asp-for="@banane.BananeP" class="form-control" />
            <span asp-validation-for="@banane.BananeP" class="text-danger"></span>
        </div>
        <div class="form-group">
            <input type="submit" value="Save" class="btn btn-primary" />
        </div>
    </form>
----action Edit
  public ActionResult EditBanane(int id, [Bind("id,Name,Color,BananeP")] Banane banane)
        {
                 
                    _context.Update(banane);

                     _context.SaveChangesAsync();
           

                return RedirectToAction("Index");

【问题讨论】:

    标签: c# .net asp.net-mvc asp.net-core


    【解决方案1】:

    如何在方法 public async Task Edit(int id, [Bind("id,..,")] ....) 上对香蕉或柠檬模型进行编辑

    如果您想编辑/更新香蕉或柠檬等模型项,您可以尝试这些方法。

    方法一:将模型项的输入字段放入表单中,并指定表单提交的操作方法,如下所示。

    @foreach (var fruit in Model.Abricots)
    {
        // Affiche les propriétés d'un abricot 
        //...
    }
    
    @foreach (var banane in Model.Bananes)
    {
        // Affiche les propriétés d'une banane
        <form asp-action="EditBanane" method="post">
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <div class="form-group">
                <label asp-for="@banane.Id" class="control-label"></label>
                <input asp-for="@banane.Id" class="form-control" />
                <span asp-validation-for="@banane.Id" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="@banane.Name" class="control-label"></label>
                <input asp-for="@banane.Name" class="form-control" />
                <span asp-validation-for="@banane.Name" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="@banane.Color" class="control-label"></label>
                <input asp-for="@banane.Color" class="form-control" />
                <span asp-validation-for="@banane.Color" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="@banane.BananeP" class="control-label"></label>
                <input asp-for="@banane.BananeP" class="form-control" />
                <span asp-validation-for="@banane.BananeP" class="text-danger"></span>
            </div>
            <div class="form-group">
                <input type="submit" value="Save" class="btn btn-primary" />
            </div>
        </form>
    }
    
    @foreach (var fruit in Model.Citrons)
    {
        // Affiche les propriétés d'un citron
        //...
    }
    

    动作方法

    [HttpPost]
    public IActionResult EditBanane(Banane banane)
    {
        //...
    

    方法二:生成预期数据,并使用 Fetch API 或 Ajax 等发出请求,通过 JavaScript 代码将数据发布到相应的操作方法。

    【讨论】:

    【解决方案2】:

    我很喜欢你的代码,也不例外,页面索引(主页面)中的模型没有更新

    @foreach (var banane in Model.Bananes)
                {
           <form asp-action="EditBanane" method="post">
                <div asp-validation-summary="ModelOnly" class="text-danger"></div>
                <div class="form-group">
                    <label asp-for="@banane.Id" class="control-label"></label>
                    <input asp-for="@banane.Id" class="form-control" />
                    <span asp-validation-for="@banane.Id" class="text-danger"></span>
                </div>
                <div class="form-group">
                    <label asp-for="@banane.Name" class="control-label"></label>
                    <input asp-for="@banane.Name" class="form-control" />
                    <span asp-validation-for="@banane.Name" class="text-danger"></span>
                </div>
                <div class="form-group">
                    <label asp-for="@banane.Color" class="control-label"></label>
                    <input asp-for="@banane.Color" class="form-control" />
                    <span asp-validation-for="@banane.Color" class="text-danger"></span>
                </div>
                <div class="form-group">
                    <label asp-for="@banane.BananeP" class="control-label"></label>
                    <input asp-for="@banane.BananeP" class="form-control" />
                    <span asp-validation-for="@banane.BananeP" class="text-danger"></span>
                </div>
                <div class="form-group">
                    <input type="submit" value="Save" class="btn btn-primary" />
                </div>
            </form>
        ----action Edit
          public ActionResult EditBanane(int id, [Bind("id,Name,Color,BananeP")] Banane banane)
                {
                         
                            _context.Update(banane);
        
                             _context.SaveChangesAsync();
                   
        
                        return RedirectToAction("Index");
    

    【讨论】:

      【解决方案3】:

      非常感谢您的回复,

      我喜欢这样,但不幸的是它不起作用,更新还没有完成

          @foreach (var item in Model.bananes)
          {
          <div class="col-md-4">
            
              <form asp-action="ViewEdit"  method="post">
      
                  <div asp-validation-summary="ModelOnly" class="text-danger"></div>
                  
                  <input type="hidden" value=@Html.DisplayFor(modelItem => item.id)>
      
                  <div class="form-group">
                      <label asp-for="@item.Name" class="control-label"></label>
                      <input class="form-control" value="@Html.DisplayFor(modelItem => item.Name)">
      
      
                  </div>
                  <div class="form-group">
                      <label asp-for="@item.Color" class="control-label"></label>
                      <input class="form-control" value="@Html.DisplayFor(modelItem => item.Color)">
      
      
                  </div>
                  <div class="form-group">
                      <label asp-for="@item.BananeP" class="control-label"></label>   
                      <input class="form-control" value="@Html.DisplayFor(modelItem => item.BananeP)">
      
                  </div>
      
                  <div class="form-group">
                      <input type="submit" value="save" class="btn btn-info text-white " />
                      
                  </div>
              </form>
          </div>}
      
      public IActionResult ViewEdit( [Bind("id,Name,Color,BananeP ")] Banane item)
              {
                
      
                          _context.Update(item);
      
                           _context.SaveChangesAsync();
      
      
                    
      
      
                      return RedirectToAction("Index");}
      

      【讨论】:

      • 如果调试代码,动作参数Banane item是否与发布值绑定?你的动作方法有什么例外吗?
      • 您可以使用更新来编辑原始问题,而不是发布新问题作为答案。
      • 也不例外,我不明白你的意思,我喜欢这样
      猜你喜欢
      • 2018-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-26
      • 2017-02-19
      • 2021-02-08
      • 1970-01-01
      相关资源
      最近更新 更多