مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

محسن نظافت

عضویت از 1394/07/12

ارسال لیستی از اطلاعات به همراه Model به Action مربوطه

  • چهارشنبه 18 آذر 1394
  • 10:10
تشکر میکنم

با سلام

این سوال را بارها و بارها از سایت شما و جستجو در اینترنت کردم اما به نتیجه ای نرسیدم. نمی دانم روش سختی است یا خیر ولی به نتیجه ای نرسیدم.

لطفا راهنمایی فرمایید لطفا ...

می خواهم توسط 2 کنترل (روش DataTable و روش WebGrid ) با فشردن دکمه اضافه کردن به گرید اطلاعات را توسط Ajax از دو text box خوانده و در Grid اضافه نمایم و با فشردن دکمه ارسال کلیه اطلاعات بایند شده  Model در Razor و همچنین اطلاعات  تغییر یافته (Add,Delete Update) افلاین در گرید به Action در تگ Form ارسال گردد .

لطفا برای پیاده سازی با این 2 گرید مخصوصا Datatable  راهنمایی نمایید

در زیر نمونه کد تستی را ارسال کردم

 

       

 

View =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-        
@model Spec.Model.TempModel
@{
    ViewBag.HeaderTitle = "فرم تستی";
}
 
<button id="btnGrid">اضافه کردن به گرید</button>

<form action="@Url.Action("Index", "Temp")" method="post" id="tempId">

 

    @Html.TextBoxFor(x => x.Temp.CODE, new { id = "txtCode", Class = "form-control ", placeholder = "کد ", Style = "width:80%;" })
    @Html.TextBoxFor(x => x.Temp.TITLE, new { id = "txtTitle", Class = "form-control ", placeholder = "عنوان", Style = "width:80%;" })

 

    <table class="table table-striped table-bordered table-hover " id="myGrid">
        <thead>
            <tr>
                <th>کد</th>
                <th>عنوان</th>
            </tr>
        </thead>
        <tbody>
            @foreach (var item in Model.TempList)
            {
                <tr>
                     <td>@item.CODE</td>
                    <td>@item.TITLE</td>
                </tr>
                count++;
            }
        </tbody>
    </table>
 
    @if (Model.TempList != null && Model.TempList.Count() > 0)
    {
        var grid = new WebGrid(Model.TempList, canSort: true);
        <div>
            @grid.GetHtml(columns:
                                grid.Columns
                                (
                                      grid.Column("CODE", "کد"),
                                      grid.Column("TITLE", "عنوان")
                                ), mode: WebGridPagerModes.Numeric)
        </div>
    }
 <button id="btnPost" type="submit" class="btn btn-primary block btnstyle">ارسال</button>
</form>

 

<script type="text/javascript">
    $(document).ready(function () {
        var myTable = $('#myGrid').DataTable(
            {
                "columns": [
                    { "data": "Column1" },
                    { "data": "Column2" }
                ]
            });
        $('#btnGrid').on('click', function () {
            myTable.rows.add([{
                "Column1": $("#txtCode").val(),
                "Column2": $("#txtTitle").val()
            }]).draw(false);
        });
    });
</script>

Controller =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

 

public virtual ActionResult Index()
        {
            List<TempDto>  temps = iTempService.GetListGeneric(null, null);
            model = new TempModel(temps);
            return View(model);
        }
 
        [HttpPost]
        public virtual ActionResult Index(TempModel model)
        {
            //Do something
            return View();
        }
        
Dto =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
public class TempDto
    {
        public long CODE { get; set; }
        public string TITLE { get; set; }
    }
    
Model=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    public class TempModel
    {
        public TempDto Temp { get; set; }
        public IList<TempDto> TempList { get; set; }
 
        public TempModel() { }

 

        public TempModel(List<TempDto> TEMPList)
        {
            this.TempList = TEMPList;
        }

 

        public TempModel(TempDto temp)
        {
            this.Temp= temp;
        }
    }
}

 

پاسخ های این پرسش

تعداد پاسخ ها : 2 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • چهارشنبه 18 آذر 1394
  • 12:31

شما باید اول اطلاعات را جایی نگهداری کنید که از دست نروند مثلا Session

بعد اطلاعات رو به سشن اضافه یا کم کنید و بعد میتونید در هر کجای برنامه از اون استفاده کنید

کاربر سایت

محسن نظافت

عضویت از 1394/07/12

  • چهارشنبه 18 آذر 1394
  • 12:47

با سلام و  تشکر

طبق فرمایش شما استفاده از View bag , tempdata گزینه خوبی است؟

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)