簡體   English   中英

如何在asp.net razor頁面中捕獲ajax發送的數據?

[英]How do I capture the data sent by ajax in asp.net razor page?

我正在嘗試使用我單擊的用戶的數據填充部分視圖。 這是代碼:

   <tbody class="text-center  ">
                @foreach (var user in Model.UserList)
                {
                    <tr key="@user.Id" id="@user.Id" class="useridinfo clickable text-center row_hover "
                        data-toggle="ajax-admin" data-url="@Url.Page("/AdminPage", "_UserInfo_AdminPartial")"
                        @*onclick="ShowUserInfo(@user.Id)"*@>
                        <th scope="col" style="width:500px">@user.Email</th>
                    </tr>
                } 
            </tbody>

C#

 public  PartialViewResult OnGetUserInfo_AdminPartial(string UserId)
    {
        UserList = _context.Users.ToList();
        return new PartialViewResult
        {
            ViewName = "_UserInfo_AdminPartial",
            ViewData = new ViewDataDictionary<User>(ViewData, new User())
            //ViewData = new ViewDataDictionary<User>(ViewData, _context.Users.FirstOrDefault(p=>p.Id== UserId))
        };
    }

jQuery

$(function () {
    var placeholderElement = $('#user_placeholder');
    var ids = $(".useridinfo").attr("id");
    $('tr[data-toggle="ajax-admin"]').click(function (userId) {
        var url = $(this).data('url');

            $.ajax({
                type: "GET",
                url: url,
               // data: JSON.stringify({ "UserId": ids }),
                data: ids,
               
            success: function () {
                placeholderElement.load("/AdminPage?handler=UserInfo_AdminPartial");
            }
        });
        console.log(ids)
    });});

部分視圖,目前很空

    @model  Data.Account.User

@{
}
<div id="user_partial" class="ceva">
    <form asp-page-handler="UserInfo_AdminPartial"></form>
    <h5>test</h5>
    <h6>@Model.Id</h6>
</div>

使用這個: ViewData = new ViewDataDictionary<User>(ViewData, new User())有效,但它使用捕獲的 Id 創建一個新用戶。 我想將具有該 ID 的現有用戶發送到部分視圖,但string UserId始終為空。 所以發送了 id 但我不知道如何捕獲它.. 我能做什么?

處理程序名稱是UserInfo_AdminPartial ,因此將data-url="@Url.Page("/AdminPage", "_UserInfo_AdminPartial")"更改為data-url="@Url.Page("/AdminPage", "UserInfo_AdminPartial")"

整個工作演示如下:

@page 
@model AdminPageModel

<table class="table">
    <tbody>
        @foreach (var user in Model.UserList)
        {
            <tr key="@user.Id" id="@user.Id" class="useridinfo clickable text-center row_hover"
                data-toggle="ajax-admin" data-url="@Url.Page("/AdminPage", "UserInfo_AdminPartial")">
                <td>@user.Id</td>
            </tr>
        } 
    </tbody>
</table>
<div id="user_placeholder"></div>
@section Scripts
{
    <script>
        $(function () {
            var placeholderElement = $('#user_placeholder');
            $('tr[data-toggle="ajax-admin"]').click(function () {
                var url = $(this).data('url');
                var ids = $(this).attr("id");
                    $.ajax({
                        type: "GET",
                        url: url + "&UserId=" + ids,                       
                        success: function (res) {
                            placeholderElement.html(res); 
                        }
                });
                console.log(ids)
            }); 
        })
    </script>
}

頁面模型:

public class AdminPageModel : PageModel
{
    public List<User> UserList { get; set; }
    public void OnGet()
    {
        UserList = _context.Users.ToList();
    }
    public PartialViewResult OnGetUserInfo_AdminPartial(string UserId)
    {
        UserList = _context.Users.ToList();

        var user = UserList.Where(a => a.Id == UserId).FirstOrDefault();

        return new PartialViewResult
        {
            ViewName = "_UserInfo_AdminPartial",
            ViewData = new ViewDataDictionary<User>(ViewData, user)
            //ViewData = new ViewDataDictionary<User>(ViewData, _context.Users.FirstOrDefault(p=>p.Id== UserId))
        };
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM