• 1400/03/12

عوض شدن id در hidden for بعد از ویرایش آیتم :

با عرض سلام و خدا قوت خدمت شما استاد بزرگوار 

استاد من در بخشی از کد به وسیله foreach یکسری آیتم گرفتم و تو صفحه نمایش دادم

 @if (Model != null)
                {

                    @foreach (var res2 in Model)
                    {
                        <div class="tab-pane @((Model.First() == res2) ? "active" : "")" id="@res2.Id">
                            <ul class="tab-paneCustom">
                                @foreach (var res in Model.Where(r => r.RestaurantOptionId == res2.RestaurantOption.Id))
                                {
                                    <!-- /.tab-pane -->
                                    <li class="liDeleteDash p-5">
                                        <figure class="bg-gray p-5">
                                            <a href="#"><img class="rounded-0" src="@(TBSMenu.Application.Utils.PathExtension.RestaurantItemsOrigin + res.FoodImageName)" alt=""></a>
                                            <figcaption class="h-300">
                                                @if (!string.IsNullOrEmpty(res.Title))
                                                {
                                                    <h6 class="heading">Food name: @res.Title</h6>
                                                }
                                                @if (!string.IsNullOrEmpty(res.Description))
                                                {
                                                    <p>About: @res.Description</p>
                                                }
                                                @if (!string.IsNullOrEmpty(res.Allergies))
                                                {
                                                    <p>Allergies: @res.Allergies</p>
                                                }
                                                @if (res.Price != (decimal)0.00)
                                                {
                                                    <p>Price: @res.Price</p>
                                                }
                                                else
                                                {
                                                    <p>Price: Free</p>
                                                }
                                                <!-- Button trigger modal -->
                                                <div class="marginLeft col-lg-2 col-sm-2">
                                                    <span class="input-group-btn" id="@(count++)">
                                                        <a data-toggle="modal" data-target="#modal_@count" class="btn btn-info">Edit!</a>

                                                    </span>
                                                </div>
                                                <!-- Modal -->
                                                <div class="modal fade" id="modal_@count" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
                                                    <div id="divId" class="modal-dialog" role="document">
                                                        <div class="modal-content">

                                                            <partial name="EditRestaurantItems" model="new EditRestaurantItemDTO {Id = res.Id }" />
                                                        </div>
                                                    </div>
                                                </div>
                                            </figcaption>
                                        </figure>
                                    </li>
                                }
                            </ul>
                        </div>
                    }

                }

در این قسمت از کد ( عکس بالا ) من کاربر رو به وسیله پارشیال هدایت می کنم به قسمت ویرایش آتم البته چون نمی دونستم که چطور به وسیله پارشییال کاربر رو هدایت کنم به کنترل get  اکشن EditRestaurantItems، مجبور شدم خودم تو ویو مدل رو پر کنم که تو کد های ویرایش پایین براتون گذاشتم و عکس پایین هم مربوط به همون بخشه.

در اولین بار و اولین آیتم (فرقی نمی کنه آیتم کدوم یکی از لیست باشه، منظورم اولی یا آخری  و ...) که عمل ویرایش رو انجام می دم آی دی اون آیتم برای تمامی آتم ها تو hidden for ست می شه و من دیگه هر کدوم از آیتم ها رو هم که ویرایش بکنم همون آتم اولیه تغییر می کنه.

کد های پایین مربوط به صفحه ویرایش آتم هستش

@using TBSMenu.Application.Services.Interfaces
@using TBSMenu.Web.PresentationExtensions
@model TBSMenu.DataLayer.DTOs.Activity.EditRestaurantItemDTO

@inject IMakeQRService MakeQrService
@{
    Layout = null;
    var option = await MakeQrService.GetRestaurantOptionsByItemId(User.GetUserId(), Model.Id);
    ViewData["Options"] = new SelectList(option, "Value", "Text");
    var items = await MakeQrService.GetRestaurantItemsById(Model.Id);
}

<form runat="server" asp-area="User" asp-controller="MakeQr" asp-action="EditRestaurantItems" method="post" enctype="multipart/form-data"
      data-ajax="true"
      data-ajax-method="post"
      data-ajax-mode="replace"
      data-ajax-update="#listComment"
      data-ajax-success="ItemSendSuccess">
    <input type="hidden" asp-for="@Model.Id" />
    <div>
        <div class="text-center">
            <div class="form-group offset-1 py-3 h-15">

            </div>
            <div class="text-center customer-card-body d-flex flex-nowrap">
                <div class="col-12 bg-gray border border-warning pt-15">
                    <h1><span class="mdi mdi-menu">Enter Your Restaurant Menu</span></h1>
                </div>
            </div>
            <div class="bg-gray">
                <div class="col-12 bg-gray text-left py-5 sideDivSize">
                    <div class="text-center">
                        <img id="output2" class="form-group" style="width: 300px" src="@(!string.IsNullOrEmpty(@items.FoodImageName) ? TBSMenu.Application.Utils.PathExtension.RestaurantItemsOrigin + @items.FoodImageName : TBSMenu.Application.Utils.PathExtension.MainDishesOrigin)" alt="Alternate Text" />
                        <div class="form-group pt-3 offset-4">
                            <label class="file d-md-flex">
                                Select File
                                <input type="file" class="px-5" onchange="loadFile2(event)" id="restaurantImage" name="restaurantImage" asp-for="@items.FoodImageName" />
                            </label>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-md-2 pt-5">
                            <div class="form-group">
                                <label>Options:</label>
                            </div>
                        </div>
                        <div class="col-md-7">
                            <div class="form-group">
                                <select id="txtOptions" asp-for="@items.RestaurantOptionId" name="restaurant.RestaurantOptionId" class="form-control" asp-items="@(ViewData["Options"] as SelectList)">
                                    <option value="0">Select Please</option>
                                </select>
                            </div>
                        </div>
                        <div class="col-md-2">
                            <span class="input-group-btn">
                                <a data-toggle="modal" data-target="#myModal" class="btn btn-info">Add!</a>

                            </span>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-md-2 pt-5">
                            <div class="form-group">
                                <label>Title:</label>
                            </div>
                        </div>
                        <div class="col-md-9">
                            <div class="form-group">
                                <input name="restaurant.Title" asp-for="@items.Title" id="txtTitle" type="text" class="form-control" placeholder="Title">
                                <span class="text-danger" asp-validation-for="@items.Title"></span>
                            </div>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-md-2 pt-5">
                            <div class="form-group">
                                <label>About this food:</label>
                            </div>
                        </div>
                        <div class="col-md-9">
                            <div class="form-group">
                                <input name="restaurant.Description" asp-for="@items.Description" id="txtDescription" type="text" class="form-control" placeholder="Description">
                                <span class="text-danger" asp-validation-for="@items.Description"></span>
                            </div>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-md-2 pt-5">
                            <div class="form-group">
                                <label>Allergies:</label>
                            </div>
                        </div>
                        <div class="col-md-9">
                            <div class="form-group">
                                <input name="restaurant.Allergies" asp-for="@items.Allergies" id="txtAllergies" type="text" class="form-control" placeholder="Allergies">
                                <span class="text-danger" asp-validation-for="@items.Allergies"></span>
                            </div>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-md-2 pt-5">
                            <div class="form-group">
                                <label>Price:</label>
                            </div>
                        </div>
                        <div class="col-md-9">
                            <div class="form-group">
                                <input name="restaurant.Price" asp-for="@items.Price" id="txtPrice" type="text" class="form-control" placeholder="Price">
                                <span class="text-danger" asp-validation-for="@items.Price"></span>
                            </div>
                        </div>
                        <div class="offset-2 col-md-6">
                            <div class="form-group">
                                <button type="submit" class="btn btn-success btn-outline">
                                    <i class="ti-save-alt"></i> Save
                                </button>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</form>

return هم باز به همون صفحه اوله که براتون گذاشتم

 [HttpPost, ValidateAntiForgeryToken]
        public async Task<IActionResult> EditRestaurantItems(EditRestaurantItemDTO restaurant, IFormFile restaurantImage, Guid id)
        {
            restaurant.Id = id;
            var res = await _makeQrService.EditRestaurantItem(restaurant, User.GetUserId(), restaurantImage);
            switch (res)
            {
                case EditRestaurantItemResult.UserNotFound:
                    TempData[ErrorMessage] = "No user with this profile was found";
                    break;
                case EditRestaurantItemResult.Error:
                    TempData[ErrorMessage] = "The operation failed";
                    break;
                case EditRestaurantItemResult.Success:
                    TempData[SuccessMessage] = "Your requested menu has been successfully added";
                    TempData[InfoMessage] = "This item can be viewed on this page";
                    break;
            }

            return View("ShowRestaurantItems", await _makeQrService.GetRestaurantItemsByUserId(User.GetUserId()));

        }

در کنترل هم چون آی دی EditReastaurantItems خالی برمیگردوند خودم یک Guid id تعریف کردم و چون در زمان پست بک توسط همون hidden for پر می شد آی دی رو با اون پر کردم restaurant.Id = id

ممنون میشم اگر امکان داره کمکم کنید

logo-samandehi