AJAX फ़ंक्शन मेरे नियंत्रक में GET विधि के लिए Id पैरामीटर पास नहीं कर रहा है।

मेरे पास यह टेबल है।

 @foreach (var user in Model)
                {
                    <tr>
                        <td>@user.FirstName</td>
                        <td>@user.LastName</td>
                        <td>@user.Email</td>
                        <td>@string.Join(" , ", user.Roles.ToList())</td>
                        <td>
                            <a class="btn btn-primary" onclick="manageRolePopup('@Url.Action("Manage","Role",                                     new {id=user.UserId },Context.Request.Scheme)')">Manage Roles</a>

                            <partial name="_RoleManagePopup.cshtml" />
                        </td>
                    </tr>
                }

क्लिक पर मैं पॉपअप उपयोगकर्ता प्रथम नाम और अंतिम नाम दिखाना चाहता हूं, इसलिए मेरे पास यह मेरे नियंत्रक में है

 [HttpGet]
        public async Task<IActionResult> Manage(string userId)
        {
            var user = await _userManager.FindByIdAsync(userId);

            ViewBag.FirstName = user.FirstName;
            ViewBag.LastName = user.LastName;

            var model = new ManageRoleViewModel();

            List<string> roleNames = new List<string>();

            foreach(var role in _roleManager.Roles)
            {
                model.RoleId = role.Id;
                roleNames.Add(role.Name);
            }
            model.UserId = user.Id;
            model.RoleNames = roleNames;

            return View(model);
        }

AJAX

manageRolePopup = (url) => {
    $.ajax({
        type: "GET",
        url: url,
        success: function (res) {
            $("#form-modal .modal-body").html(res);
            $("#form-modal").modal("show");
        }
    })
}

देखें

<form method="post" asp-controller="Role" asp-action="Manage" asp-route-UserId="@Model.UserId">
    <div class="row">
        <div class="col-3">
            <h4>@ViewBag.FirstName @ViewBag.LastName</h4>

            <div class="form-group">
                <select asp-items="@new SelectList(Model.RoleNames)">
                    <option selected disabled>---Select New Role---</option>
                </select>
            </div>
        </div>
    </div>
</form>

जब मैं नीचे की तरह आईडी पास कर रहा हूं, तो सब कुछ अच्छा है। उपयोगकर्ता शून्य नहीं है, आईडी पैरामीटर भी।

<a asp-controller="Role" asp-action="Manage" asp-route-UserId="user.UserId"></a>

जाहिर है मैं अद्यतन विधि करना चाहता हूं लेकिन अभी के लिए मैं इसे प्रदर्शित करना चाहता हूं।

0
zarpat 22 नवम्बर 2021, 18:20

1 उत्तर

सबसे बढ़िया उत्तर

आपको अपने AJAX url में userId जोड़ना होगा

manageRolePopup = (userId) => {

 var url = @Url.Action("Manage","Role");

 $.ajax({
        type: "GET",
        url: url+"?UserId="+userId,
        ....

चूँकि आपके पास UserIds की एक सूची है जिसकी आपको आवश्यकता है या UserId डेटा विशेषता को अपने टैग में जोड़ें, या इसे इनपुट पैरामीटर के रूप में पुश करें

<a class="btn btn-primary" onclick="manageRolePopup(@user.UserId)>Manage Roles</a>
1
Serge 22 नवम्बर 2021, 19:08
शुक्रिया जनाब। शानदार जवाब। इसने मेरी समस्या हल कर दी। मैंने सोचा था कि मेरी ऑनक्लिक विधि का तीसरा पैरामीटर जो "नया [{id=user.UserId}] है, को AJAX URL को पास किया जाना चाहिए। क्या आप बता सकते हैं कि यह काम क्यों नहीं करता है?
 – 
zarpat
22 नवम्बर 2021, 18:49
मैंने अपना जवाब अपडेट किया।
 – 
Serge
22 नवम्बर 2021, 19:04
मैंने अपना जवाब फिर से अपडेट किया
 – 
Serge
22 नवम्बर 2021, 19:08