我做了一个HttpPost:

[HttpPost]
public IActionResult PokemonDetails(int PokemonId)
{

    return PartialView("_PokemonDetails");
}

我想从http中的ID中找到所有数据。 数据在我的控制器中:

public IActionResult Index()
{
    #region ListeDesPokemons
    var pokemonList = new List<PokemonModel>();
    var Id = 1;
    var Img = 1;

    pokemonList.Add(new PokemonModel() { Id = Id++, Name = "Bulbizarre", UsName = "Bulbasaur(us)", JpName = "フシギダネ(jp)", Type1 = "Plante", Type2 = "Poison", Rate = 45, Image = "https://eternia.fr/public/media/pokedex/artworks/00" + Img++ + ".png" });
    pokemonList.Add(new PokemonModel() { Id = Id++, Name = "Herbizarre", UsName = "Ivysaur(us)", JpName = "フシギソウ(jp)", Type1 = "Plante", Type2 = "Poison", Rate = 45, Image = "https://eternia.fr/public/media/pokedex/artworks/00" + Img++ + ".png" });

    #endregion

    var model = new PokemonViewModel();

    model.Pokemons = pokemonList;

    ViewBag.TotalPokemon1G = pokemonList.Count;

    return View(model);
}

从id找到好的数据,谢谢。 我还没有实体。

#1楼 票数:0

您可以使用LINQ在列表中查询所需的ID。

int PokemonId = 2; // input from http post    
var result = pokemonList.FirstOrDefault(p => p.Id == PokemonId);

#2楼 票数:0 已采纳

您可以使用TempData在不同的请求之间传递数据。 TempData用于将数据从当前请求传递到后续请求(意味着从一页重定向到另一页)。 它的寿命很短,并且仅在目标视图完全加载后才存在。 但是您可以通过调用Keep()方法将数据保留在TempData中。

这是一个简单的工作演示

模型:

public class PokemonModel
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string UsName { get; set; }
    public string JpName { get; set; }
    public string Type1 { get; set; }
    public string Type2 { get; set; }
    public int Rate { get; set; }

    public string Image { get; set; }
}

public class PokemonViewModel
{
    public List<PokemonModel> Pokemons { get; set; }
}

控制器:

public IActionResult PokemonList()
    {
        #region ListeDesPokemons
        var pokemonList = new List<PokemonModel>();
        var Id = 1;
        var Img = 1;

        pokemonList.Add(new PokemonModel() { Id = Id++, Name = "Bulbizarre", UsName = "Bulbasaur(us)", JpName = "フシギダネ(jp)", Type1 = "Plante", Type2 = "Poison", Rate = 45, Image = "https://eternia.fr/public/media/pokedex/artworks/00" + Img++ + ".png" });
        pokemonList.Add(new PokemonModel() { Id = Id++, Name = "Herbizarre", UsName = "Ivysaur(us)", JpName = "フシギソウ(jp)", Type1 = "Plante", Type2 = "Poison", Rate = 45, Image = "https://eternia.fr/public/media/pokedex/artworks/00" + Img++ + ".png" });

        #endregion

        var model = new PokemonViewModel();

        model.Pokemons = pokemonList;
        var json = JsonConvert.SerializeObject(pokemonList);
        TempData["pokemonJson"] = json;

        ViewBag.TotalPokemon1G = pokemonList.Count;

        return View(model);
    }

    [HttpPost]
    public IActionResult PokemonDetails(int PokemonId)
    {
        var pokemonJson = TempData["pokemonJson"].ToString();
        TempData.Keep("pokemonJson");
        var pokemonList = JsonConvert.DeserializeObject<List<PokemonModel>>(pokemonJson);
        var pokemon = pokemonList.SingleOrDefault(p => p.Id == PokemonId);
        return PartialView("_PokemonDetails",pokemon);
    }

视图:

@model WebApplication1.Models.PokemonViewModel


<table class="table">
  <thead>
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.Pokemons[0].Name)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Pokemons[0].JpName)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Pokemons[0].UsName)
        </th>

        <th></th>
    </tr>
  </thead>
  <tbody>
    @foreach (var item in Model.Pokemons)
    {
        <tr>
            <td>

                @Html.DisplayFor(modelItem => item.Name)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.JpName)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.UsName)
            </td>
            <td>
                <input hidden  asp-for="@item.Id" />
                <a href="javascript:;" class="btnclick">PokemonDetails</a>
            </td>
        </tr>
    }
  </tbody>
</table>

<div id="pokemon"></div>
@section Scripts{ 
<script type="text/javascript">
    $(".btnclick").click(function () {
        var id = $(this).closest("td").find("input").val();
        $.ajax({
            type: "post",
            url: "/Home/PokemonDetails?PokemonId=" + id,
            success: function (result) {
                $("#pokemon").html(result);
            }
        });
    });

</script>  
}

局部视图

@model WebApplication1.Models.PokemonModel
<div>
<hr />
<dl class="dl-horizontal">
    <dt>
        @Html.DisplayNameFor(model => model.Id)
    </dt>
    <dd>
        @Html.DisplayFor(model => model.Id)
    </dd>
    <dt>
        @Html.DisplayNameFor(model => model.Name)
    </dt>
    <dd>
        @Html.DisplayFor(model => model.Name)
    </dd>
    <dt>
        @Html.DisplayNameFor(model => model.JpName)
    </dt>
    <dd>
        @Html.DisplayFor(model => model.JpName)
    </dd>
    <dt>
        @Html.DisplayNameFor(model => model.UsName)
    </dt>
    <dd>
        @Html.DisplayFor(model => model.UsName)
    </dd>
    <dt>
        @Html.DisplayNameFor(model => model.Type1)
    </dt>
    <dd>
        @Html.DisplayFor(model => model.Type1)
    </dd>
    <dt>
        @Html.DisplayNameFor(model => model.Type2)
    </dt>
    <dd>
        @Html.DisplayFor(model => model.Type2)
    </dd>
    <dt>
        @Html.DisplayNameFor(model => model.Rate)
    </dt>
    <dd>
        @Html.DisplayFor(model => model.Rate)
    </dd>
</dl>
</div>

#3楼 票数:0

好的,我来了,这就是答案。

我的控制器:

public IActionResult Index()
{
    #region ListeDesPokemons

    var pokemonList = new List<PokemonModel>();
    var Id = 1;
    var Img = 1;

    pokemonList.Add(new PokemonModel() { Id = Id++, Name = "Bulbizarre", UsName = "Bulbasaur(us)", JpName = "フシギダネ(jp)", Type1 = "Plante", Type2 = "Poison", Rate = 45, Image = "https://eternia.fr/public/media/pokedex/artworks/00" + Img++ + ".png" });
    pokemonList.Add(new PokemonModel() { Id = Id++, Name = "Herbizarre", UsName = "Ivysaur(us)", JpName = "フシギソウ(jp)", Type1 = "Plante", Type2 = "Poison", Rate = 45, Image = "https://eternia.fr/public/media/pokedex/artworks/00" + Img++ + ".png" });
     var model = new PokemonViewModel();

    model.Pokemons = pokemonList;

    var json = JsonConvert.SerializeObject(pokemonList);

    TempData["pokemonListJson"] = json;
    TempData.Keep("PokemonListJson");

    ViewBag.TotalPokemon1G = pokemonList.Count;

    return View(model);
}


 [HttpPost]
public IActionResult PokemonDetails(int pokemonId)
{
    if (TempData["pokemonListJson"] != null)
    {
        if (string.IsNullOrEmpty(TempData["pokemonListJson"].ToString()))
        {
            return null;
        }
    }

    var pokemonListJson = TempData["pokemonListJson"].ToString();
    TempData.Keep("PokemonListJson");

    var pokemonList = JsonConvert.DeserializeObject<List<PokemonModel>>(pokemonListJson);
    var selectedPokemon = pokemonList.SingleOrDefault(p => p.Id == pokemonId);

    if (selectedPokemon != null)
    {
        return PartialView("_PokemonDetails", selectedPokemon);
    }

    return null;
}

我的局部视图:

@model PokemonModel
<div id="taillDescriptionModal" class="modal-dialog modal-dialog-scrollable mw-100 m-auto" role="document">
    <div class="modal-content">
        <div class="modal-header">
            <h5 id="modalLabelStack2" class="modal-title font-weight-bold float-left">n° @Html.DisplayFor(model => model.Id)</h5>
            <div id="nomPokemonStack2" class="ml-auto">
                <h5 id="Name">@Html.DisplayFor(model => model.Name)</h5>  <h5 id="UsName">@Html.DisplayFor(model => model.UsName)</h5> <h5 id="JpName">@Html.DisplayFor(model => model.JpName)</h5>
            </div>
            <button type="button" class="close" data-dismiss="modal" aria-label="close">
                <span class="text-danger" aria-hidden="true">&times;</span>
            </button>
        </div>
        <div class="modal-body">
            <div class="row">
                <div class="col overflow-hidden">
                    <img class="img-fluid rounded-lg" src="@Html.DisplayFor(model => model.Image)" alt="pokemon.Name" />
                </div>
                <div class="col">
                    <span>Type : </span>
                    <div class="col text-white">
                        <span class="@Html.DisplayFor(model => model.Type1) badge">@Html.DisplayFor(model => model.Type1)</span>
                        <span class="@Html.DisplayFor(model => model.Type2) badge">@Html.DisplayFor(model => model.Type2)</span>
                    </div>
                </div>
            </div>
        </div>

        <div class="modal-footer">
            <button type="button" class="btn btn-secondary" data-dismiss="modal">Fermer</button>
            <button type="submit" class="btn btn-success" onclick="afficheIdSurIndex(@Html.DisplayFor(model => model.Rate))"> Choisir</button>
        </div>
    </div>
</div>

<script>
    function afficheIdSurIndex(selectedPokemonRate) {
        $.ajax({
            url: '/Pokedex/Calcul/',
            type: 'POST',
            dataType: "html",
            data: { "selectedPokemonRate": selectedPokemonRate },
            success: function () {
                //enlever la classe pour afficher le contenu de la div
                $('#Test').removeClass('text-hide');
                //$('#Test').addClass('text-show');

                var rateTxt = 'Taux de Capture du pokémon sélectionné : ' + selectedPokemonRate
                //vider le contenu de la div
                $("#Test").empty();
                //écrire dans la div
                $("#Test").append(rateTxt);

                //fermer les modals
                $('#pokemonDetails').modal('hide');
                $('#choixPokemon').modal('hide');
            }
        })
    }
</script>

我的索引页面:

@model PokemonViewModel
@{
    ViewData["Title"] = "Pokedex";
    Layout = "~/Views/Shared/_LayoutPokemon.cshtml";
    <script src="~/lib/jquery/dist/jquery.min.js"></script>

}

<h1>Pokedex</h1>

<!-- Button choix Pokémon modal -->
<div class="container">
    <button type="button" class="btn btn-primary mb-2" data-toggle="modal" data-target="#choixPokemon">
        Pokemon 1G
    </button>
</div>

<!-- Modal choix Pokémon -->
<div id="choixPokemon" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="choixPokemonModalLabel" aria-hidden="true">
    <div id="modalWitdh" class="modal-dialog modal-dialog-scrollable mw-100 m-auto" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <h5 id="choixPokemonModalLabel" class="modal-title">Pokédex première génération, @ViewBag.TotalPokemon1G Pokémons </h5>
                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true">&times;</span>
                </button>
            </div>
            <div class="modal-body text-center">
                <div class="row">
                    @foreach (var pokemon in Model.Pokemons)
                    {
                        <div class="col">
                            <button type="submit" class="btn" onclick="getInfo(@pokemon.Id)">
                                <div class="card text-center rounded-lg">
                                    <div id="tailleCard" class="card-body">
                                        <h5 id="cardTitle" class="card-title">n°@pokemon.Id <br /> @pokemon.Name</h5>
                                        <img id="tailleImg" src="@pokemon.Image" alt="@pokemon.Name" />
                                    </div>
                                </div>
                            </button>
                        </div>
                    }
                </div>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-dismiss="modal">Fermer</button>
            </div>
        </div>
    </div>
</div>

<!-- Modal Description du pokémon choisi -->
<div id="pokemonDetails" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="descriptionPokemonModalLabel" aria-hidden="true">
    @*Contenue dans vu partiel _PokemonDetails*@
</div>

@*Div de collection des donnés du pokémon selectionné dans le deuxième modal.(données provenant de la vue partiel _PokemonDetails) *@
<div class="row">
    <div class="col">
        <h6 id="Test" class="text-hide"></h6>
    </div>
</div>

@*button script pour collecter les données du pokémon sélectionné dans le 1er modal*@
<script>
    function getInfo(pokemonId) {
        event.preventDefault;
        console.log(pokemonId);

        $.ajax({
            url: '/Pokedex/PokemonDetails/',
            type: 'POST',
            dataType: "html",
            data: { "pokemonId": pokemonId },
            success: function (response) {

                $("#pokemonDetails").html(response);
                $('#pokemonDetails').modal('show');
            }
        })

    }
</script>

在启动页面中,我需要添加:

services.AddMemoryCache();
services.AddSession();
services.AddMvc().AddSessionStateTempDataProvider();

我把所有东西都放在这里以寻求帮助。

#4楼 票数:0

在动作PokemonDetails中添加断点:

[HttpPost]
        public IActionResult PokemonDetails(int pokemonId)
        { // add break point here

当在此处达到断点时,您得到了pokemonId吗?

  ask by Alexandre Prod'Hon translate from so

未解决问题?本站智能推荐:

2回复

无法更新或编辑 HTTP post 方法中的特定数据

我想更新数量值。 为此,我使用索引的 HTTPPost 方法来更新数量。 但它不能因为错误。 这是我的代码: 索引.cshtml _QuantityPartial.cshtml 这是我的输出,下面是我的输出。 我想要这样的东西。 我实际上想要当我点击“+”然后数量会被更新。 下面是我的
2回复

ASP.NET Core Webb API 中的多个 HttpPost 方法

我无法在 ASP.NET Core 中处理我的路由规则。 我有以下用户身份验证操作方法的后端和前端应用程序。 由于这两种操作方法在有效载荷中都有一个参数不同或附加参数。 Http 客户端实际上无法导航精确的方法,因此抛出一个错误“歧义”的异常,这是真的,因为这两个 HttpPost 方法都有一个带
1回复

HTTP POST 请求阻止跨源请求

我正在将 http 请求从我的 angular 客户端应用程序发送到 .NET 核心 Web API。 尽管我启用了 CORS,但我收到了 CORS 错误。 当我向 SearchController 发送 GET 请求时,该请求通过得很好,但是当我向 FormController 发送 POST 请
1回复

如何将选定的 ID 传递到我的 SQL 数据库?

我在项目的最后一部分遇到了麻烦。 除了最后一部分,我的所有 SQL 表列都已填满。 我有两个表 WorkSchedule 和 WorkShiftBid。 在 WorkShiftBid 中,我有 WorkShiftBidID,WSBidDateTime,WSBidStatus,WorkSchedul
1回复

MySqlException:第 1 行“Id”列的数据太长

我的 ASP.NET Core 2.2 / Entity Framework 核心代码第一个模型如下所示: 我的 MySQL 触发器创建一个唯一的 8 个字符 Id 如下所示: 我将[StringLength(8, MinimumLength = 8)]到 Id 希望 EF 将列保留在字符范
1回复

ASP.NET Core 2.1:在HTTP POST失败后导航回页面验证显示浏览器错误

问题: 使用ASP.NET Core 2.1 MVC项目,我使用浏览器后退按钮返回到表单后收到以下浏览器错误消息,其中表单POST失败服务器端验证: Firefox中的错误消息: 文件已过期 该文档不再可用。 Firefox的缓存中不提供所请求的文档。
1回复

有没有比使用IAsyncActionFilter更好的方法来授权用户是否在角色中或用户ID是否在数据库中用于特定记录

要求:有些控制器方法只有在以下情况下才能调用: 1.用户具有“TaskAdmin”角色 要么 2.用户负责将在控制器方法中修改的数据库对象(只有一个列具有要比较的用户ID)。 此数据表中的记录可以更改,而不是“硬编码”。 我知道解决这个问题的两种可能性: 创建
1回复

如何向模型添加角色 ID

我已经获得了用户的角​​色 ID,我想更新另一个包含角色 ID 列的模型,但它总是说无法将通用列表转换为字符串,我将获得的角色 ID 转换为字符串,但没有获得值,我想将其添加到模型中。 这是我到目前为止 这是异常代码。 当我更改为没有任何值的 ToString 时 而且我只想更新甚至不创建