繁体   English   中英

从 httpPost 中查找具有 id 的数据

Find data with id from httpPost

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我做了一个HttpPost:

[HttpPost]
public IActionResult PokemonDetails(int PokemonId)
{

    return PartialView("_PokemonDetails");
}

我想从 http 中的 Id 中找到所有数据。 数据在我的 controller 中:

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 中找到好的数据谢谢。 我还没有实体。

4 个回复

您可以使用 LINQ 在列表中查询您想要的 Id。

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

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

这是一个简单的工作演示

Model:

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; }
}

Controller:

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>

好的,我在这里做了答案。

我的 controller:

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();

我把所有东西都放在这里是为了帮助任何需要帮助的人。

在动作 PokemonDetails 中添加断点:

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

当断点在这里被击中时,你得到 pokemonId 了吗?

1 如何将数据从HttpPost返回到WebApi

我已经通过了一个规范,该规范要求使用HttpPost请求并接收回数据-从规范中看,好像它是Form数据。 我当前的WebApi实现不从HttpPost请求中返回任何数据,仅返回HttpResponse.OK(200)和要导航到的位置。 我尝试了一个非常简单的格式化程序,但是返回的是x ...

2 使用HttpPost从本地服务器获取数据

我在android的java类中使用了以下代码。 一切正常,除了不会发送任何请求。 答案始终为空。 在PHP中,我使用以下代码 知道它是如何工作的吗? ...

2012-03-18 09:18:08 1 950   android
3 如何从HttpPost对象读取数据?

我正在使用POST方法将请求连同字符串作为参数发送到Web服务。 例如:- 我还将发送一个字符串以及Web服务URL 我使用发送请求 我想打印httpPost对象内部的内容,以了解是否将正确的数据发送到服务器。 HttpPost.toString()对我不起作用。 ...

4 HttpPost 模型 ID 始终为 0

我有一个更新页面,获取包含我的模型的 ViewModel。 当我将它加载到页面时一切正常,但是当我提交更改时,我的模型 ID始终为0,我的意思是LITTERALY ALWAYS 。 我正在学习教程,我完全按照他所做的去做,但仍然为0。 这是我在参数中传递 VM 的 POST 方法。 这是我的 ...

5 单独的URL ID和HttpPost

是否可以将URL(Home / Index / 10 )中的ID与使用HttpPost的表单提交分开并将其传递给控制器​​? 进一步说明 一个代码示例可以是: CustomerInfo是一个对象,在这种情况下,它将包含一个称为“ ID”的int以及其他与客户相关的信息。 ...

6 在Codeigniter中使用API​​从数据中查找ID

在此代码中,我将API与另一家公司建立连接以获取我的信息并在我的视图中显示它: 这是我显示API数据的视图。 我的问题是,如果我单击该行以仅显示该行的数据,该如何获取数据。 因此,让我说我从EMCO BELGIUM NV提取BedrijfsID 1:如果单击该按钮,则只需要该公司 ...

7 如何查找最新数据和ID

我正在处理公司的分类帐,而我的会计部门需要使用日期为COA ID的搜索分类帐。 我可以找到日期至今的记录,但是当我编写COA ID的代码时,它将忽略日期公式。 以下是我尝试过的完整代码 我也尝试过 对于后端,我正在使用vb.net和MS SQL。 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM