دریافت مقدار از PartialView در کنترلر در Asp.net Core
با سلام ... داخل پروژه یک ریپوزیتوری نوشتم برای رد درخواست امانت کتاب با استفاده از فرم مودال قسمت نمایش فرم مودال در HttpGet مشکلی نداره اما در قسمت Post وقتی BreackPoint میزنم مقدار id==0 قرار میده و وارد صفحه ارور میشه .. البته حدس میزنم که بخاطر اینه که در partialView مقدار Id قرار ندادم چون خطا میزنه .. چطور میشه <type="hiddwn" input> مربوط به فرمی که با ViewModel ارتباط داره این تگ input بدون مشکل کار کنه ؟
//کد مربوط به ریپوزیتوری
public void PostRequestReject(ManageRequestViewModel model)
{
var query = (from br in _context.BarrowBook_Tbl where br.Id == model.Id select br);
var result = query.SingleOrDefault();
if (query.Count() != 0)
{
result.flag = 3;
result.requestDate = DateTime.Now;
_context.BarrowBook_Tbl.Attach(result);
_context.Entry(result).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
_context.SaveChanges();
}
}
//کد قسمت controller
[HttpPost]
public IActionResult RejectRquestPost(ManageRequestViewModel model)
{
_manageRequestRepository.PostRequestReject(model);
return RedirectToAction("Index");
}
کدهای قسمت PartialView
@model IEnumerable<LibraryWebSystem.DataLayer.ViewModels.ManageRequestViewModel>
<form asp-controller="ManageRequest" asp-action="RejectRquestPost" method="post">
<div class="modal-header">
<button type="button" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title">رد درخواست امانت</h4>
</div>
@foreach (var item in Model)
{
<div class="modal-body">
آیا از رد درخواست کاربر با نام <span>@item.userFullName</span> برای کتاب <span>@item.BookName</span> مطمین هستید ؟
</div>
}
<div class="modal-footer">
<button type="button" data-dismiss="modal">بازگشت</button>
<button type="submit">
تایید
</button>
</div>
</form>
ممنون میشم راهنمایی بفرمایید
فکر میکنم مشکل شما این هست که میخواید یک مقدار رو از View یا PartialView به سمت کنترلر ارسال کنید و نمی تونید. ببینید شما یک اکشن متد دارید از نوع HttpGet که می فرمایید مشکلی نداره و Id رو در اینجا دارید و یک اکشن متد هم از نوع HttpPost که در اینجا نمی تونید مقدار رو دریافت کنید.
به مثال زیر توجه کنید :
شما در اکشن متد HttpGet می تونید مقدار Id رو درون یک ViewBag نگهداری کنید.
[HttpGet]
public IActionResult myName(int Id)
{
ViewBag.myId = Id;
return PartialView();
}
در کدهای View
<form>
...
<input Id="Id" name="Id" value="@ViewBag.myId" hidden />
</form>
کد بالا رو خیلی خطلاصه نوشتم. در تگ فرم خودتون یک input قرار بدید و در value اون مقدار ViewBag رو قرار بدید. حالا بعد از اینکه فرم شما به سمت سرور Post میشه در اکشن متد HttpPost هم به مقدار Id دسترسی دارید.
[HttpPost]
public IActionResult myName(int Id)
{
//عملیات دیتابیس
}
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- نمایش صفحه در پنجره جدید با کلیک روی لینک (تگ a) در Asp
- افزودن مقادیر به صورت دستی به List دریافت شده از ریپازیتوری
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2