【问题标题】:Editing single entry and show multiple in ASP.NET MVC在 ASP.NET MVC 中编辑单个条目并显示多个
【发布时间】:2021-05-28 06:38:07
【问题描述】:

我对此很陌生,我正在尝试显示多个要显示的条目,并且每个条目都有一个按钮来编辑它们。我认为这真的很容易,但由于某种原因,我没有得到点击的实体。有没有办法在不运行 javascript 的情况下获取修改后的实体?

任何帮助将不胜感激。我找不到任何执行此操作的示例代码。有许多示例返回所有条目但不返回单个元素。

这是我的实体类Resource

public class Resource 
{
    [Required]
    public string title { get; set; }
    [Required]
    public int value { get; set; }
    
    [Key]
    [Required]
    public int id { get; set; }
}

在控制器方面我有:

    [HttpGet]
    public IActionResult Index()
    {
        return View(resources);
    }

    [HttpPost]
    public IActionResult Index(Resource resource)
    {
        return View(resource);
    }

这里是视图和编辑器模板

@model learningMVC.Models.Resource[]
@{
    ViewData["Title"] = "index";
}
<h1>index</h1>
<fieldset>
    @Html.EditorFor(x => x);
</fieldset>


@addTagHelper "*, Microsoft.AspNetCore.Mvc.TagHelpers"
@model learningMVC.Models.Resource
<div>
    First Name:<br />
        <form asp-action="Index" asp-controller="Home">
             <input asp-for="id" class="form-controller" />
             <input asp-for="value" class="form-controller" />
             <input asp-for="title" class="form-controller" />
             <input type="submit" value="Save" class="btn btn-primary" id="btnSubmit_@Model.id" />
        </form>
</div>

【问题讨论】:

  • 您的索引页面是否接受资源列表?
  • 你有asp.net-mvc的标签(对于完整的经典.NET框架 - 最高v4.8) - 还有asp.net-core-mvc对于较新的ASP.NET Core 框架。您正在使用和询问哪一个?还是您特别想知道这两个世界?
  • 这是针对 asp.net-core-mvc 的。谢谢指正。

标签: asp.net-core razor asp.net-core-mvc


【解决方案1】:

在你的情况下,你应该使用particalview而不是editfor,你可以在下面看到我的演示。

_ResourcesPartical.cshtml:

@model Resource
<div>
    <form method="post" asp-action="Index">
        First Name:<br />
        <input asp-for="id" class="form-controller" />
        <input asp-for="value" class="form-controller" />
        <input asp-for="title" class="form-controller" />
        <input type="submit" value="save" />
    </form>
</div>

您的索引视图

@model List<Resource>
@foreach(var m in Model) 
   { 
       @await Html.PartialAsync("_ResourcesPartical", m)
   }

控制器

[HttpGet]
public IActionResult Index()
{
    //here you get your data.below is my fake data.
    var resources= new List<Resource>
    {
            new  Resource
        {
            id = 1,
            title = "aa",
            value = 3
        },
            new  Resource
        {
            id = 2,
            title = "bb",
            value = 4
        }
    };
    return View(resources);
}

[HttpPost]
public IActionResult Index(Resource resource)
{
    return RedirectToAction("Index");
}

测试结果:

【讨论】:

  • 欣银秋,感谢您的耐心等待。虽然我只是复制粘贴,但它没有显示页面加载时在主控制器中声明的资源。
猜你喜欢
  • 1970-01-01
  • 2010-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-12
  • 1970-01-01
相关资源
最近更新 更多