نمایش نتایج 1 تا 9 از 9

نام تاپیک: عدم مقدار دهی ParentID

  1. #1

    عدم مقدار دهی ParentID

    با سلام و ادب.
    من متوجه نمی شم چرا مقدار parentId ارسال نمی شه. اگه ممکنه راهنمایی کنید.

    کد صفحه Index:

    @model IEnumerable<WebProject.Entity.ContactUS>




    <div class="response-area">
    <h2>تعداد نظرات : @ViewBag.count</h2>
    @DisplayComment(Model.Where(x => x.ParentId == null))
    @Html.ActionLink("Create", "Create", "ContactUS")
    @helper DisplayComment(IEnumerable<WebProject.Entity.Conta ctUS> comments)
    {
    <ul class="media-list" style="background-color:aqua;box-shadow:rgb(0, 128, 128)10px 10px;">
    @foreach (var comment in comments)
    {
    <li class="media" style="border:1px solid #272727;">


    <div class="media-body" style="direction:rtl;text-align:right;background-color:yellowgreen;">
    <ul class="sinlge-post-meta" style="background-color:palevioletred;">
    <li style="list-style: none;">
    <i class="fa fa-user"></i>
    <span>&nbsp;</span>
    @comment.Name


    <span style="float:left;text-align:left;position:relative;font-size:12px;color:#f1f1f1;">
    <i class="fa fa-clock-o">&nbsp;ساعت ارسال&nbsp;</i>
    @comment.InsertDateTime.ToShortTimeString()


    <i class="fa fa-calendar">&nbsp;تاریخ ارسال&nbsp;</i>
    @comment.InsertDateTime.ToString("yyyy/MM/dd")
    </span>


    </li>
    </ul>
    <p style="text-indent: 5px;overflow:auto;">
    @comment.CommentBox
    </p>
    @*<a href="#" id="btnReply_@comment.CommentId">پاسخ</a>*@
    @Html.ActionLink("پاسخ", "Create", "ContactUS", new { parentId = @comment.Id }, new { @class = "", id = "btnReply_@comment.Id" })
    </div>


    @{
    var childComment = Model.Where(x => x.ParentId == comment.Id).ToList();
    if (childComment.Count > 0)
    {
    <ul>
    <li class="second-media" style="background-color:greenyellow;">
    @DisplayComment(childComment)
    </li>
    </ul>
    }
    }
    </li>
    }
    </ul>
    }
    </div>




    <script type="text/javascript">
    $(document).ready(function () {
    $("[id*=btnReply]").each(function () {
    $(this).click(function () {
    //آی دی کامنتی که دکمه پاسخ دهی آن فشرده شده است را در متغیر می ریزد
    var commentid = $(this).attr("Id").match(/[\d]+$/);
    $("#ParentId").val(commentid);
    });
    });
    });
    </script>




    کد کنترلر مربوطه:

    // GET: Menu/Create
    public ActionResult Create()
    {
    ViewBag.contacts = _contactUsService.GetMany(t => t.ParentId == null).ToList();
    return View();
    }


    // POST: Menu/Create
    // To protect from overposting attacks, please enable the specific properties you want to bind to, for
    // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(ContactUS contact,int? parentId)
    {
    if (ModelState.IsValid)
    {
    if (contact == null)
    {
    return View();
    }
    _contactUsService.Insert(contact);
    return RedirectToAction("Index", "ContactUS");
    }


    return View(contact);


    }


    Entity:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.ComponentModel.DataAnnotations;
    using System.ComponentModel.DataAnnotations.Schema;


    namespace WebProject.Entity
    {
    public class ContactUS : BaseEntity<int>
    {
    #region ############### Ctor ################


    public ContactUS()
    {
    InsertDateTime = DateTime.Now;
    }


    #endregion


    #region


    /// <summary>
    /// آی دی جدول
    /// </summary>
    //*****************************************
    //[Required]
    ////*****************************************
    //public int CommentId { get; set; }




    /// <summary>
    /// کلید خارجی جدول
    /// </summary>
    //*****************************************
    //*****************************************
    public int? ParentId { get; set; }




    /// <summary>
    /// آی دی پست یا مطلبی که نظر برا آن ثبت خواهد شد
    /// </summary>
    public int PostId { get; set; }




    /// <summary>
    /// نام کاربر نظر دهنده
    /// </summary>
    //*****************************************
    [Required]
    [StringLength(maximumLength: 20)]
    //*****************************************
    public string Name { get; set; }




    /// <summary>
    /// ایمیل کاربر نظر دهنده
    /// </summary>
    //*****************************************
    [Required]
    [DataType(dataType: DataType.EmailAddress)]
    //*****************************************
    public string Email { get; set; }




    /// <summary>
    /// نظر کاربر
    /// </summary>
    //*****************************************
    [Required]
    [StringLength(maximumLength: 100)]
    [DataType(dataType: DataType.MultilineText)]
    //*****************************************
    public string CommentBox { get; set; }




    /// <summary>
    /// در حال نمایش بودن یا نبودن نظر
    /// </summary>
    //*****************************************
    //*****************************************
    public bool CommentIsActive { get; set; }




    /// <summary>
    /// تاریخ و ساعت ثبت نظر
    /// </summary>
    //*****************************************
    //*****************************************
    public DateTime InsertDateTime { get; set; }






    #endregion




    #region ############ Navigation #############




    #endregion
    }
    }



  2. #2

    نقل قول: عدم مقدار دهی ParentID

    سلام
    شما منظورتون این خطه؟
    @Html.ActionLink("پاسخ", "Create", "ContactUS", new { parentId = @comment.Id }, new { @class = "", id = "btnReply_@comment.Id" })

    این خط یه لینک واسه نوع GET اکشن Create رو ایجاد میکنه نه اکشن POST، شما واسه دریافت اون ایدی باید واسه اکشن Get پارامتر تعریف کنین
    اما اگه مشکلتون توی نوع POST اکشن هستش لطفا کدای صفحه مربوط به اکشن create رو قرار بدین

  3. #3

    نقل قول: عدم مقدار دهی ParentID

    سلام در کد کنترلر اکشن create آورده شده.

    مشکلم دقیقا اینه که وقتی می خوام برای یک کامنت پاسخی بنویسم، آن رو بعنوان یک کامنت جدید در نظر می گیره نه پاسخ کانتی که روی اون کلیک شده. وقتی بررسی کردم متوجه شدم دلیلش اینه که همواره parentId برابر با null در نظر گرفته میشه و مقدار parentId در مدل ست نمیشه. نمی دونم چطور این مشکل رو رفع کنم اینه که از شما مهندسین گرامی کمک خواستم.

  4. #4

    نقل قول: عدم مقدار دهی ParentID

    نقل قول نوشته شده توسط mr.sirwan مشاهده تاپیک
    @Html.ActionLink("پاسخ", "Create", "ContactUS", new { parentId = @comment.Id }, new { @class = "", id = "btnReply_@comment.Id" })

    ببینین اصلا این خط درست نیست، چون همونطور که گفتم این لینکی به اکشن Get متد ایجاد میکنه، که توی اکشن Get متد که توی کنترلرتون هست اصلا پارامتری با این نام ندارین، این از این مورد
    مورد بعدی اینه که کدای صفحه Create.cshtml رو قرار بدین، چون تا اونجایی که من مبینیم توی صفحه index کدی واسه ثبت کامنت ننوشتین، پس یعنی کدای درج کامنت جدید باید یه جای دیگه باشن، باید از تگ فرم برای پست کردن اطلاعات استفاده کنین
    آخرین ویرایش به وسیله mr.sirwan : سه شنبه 21 آذر 1396 در 18:12 عصر

  5. #5

    نقل قول: عدم مقدار دهی ParentID

    کد مربوط به ویو Create:

    @model WebProject.Entity.ContactUS


    @{
    ViewBag.Title = "Create";
    Layout = "~/Views/Shared/_ManagementLayout.cshtml";
    }


    <div id="wrap">
    <div id="main">
    <div class="row">
    <div class="col-md-5">
    <h3 class="heading">نظرات و پاسخ ها</h3>
    </div>
    <div class="col-md-7">
    <div id="upper_blank"></div>
    </div>
    </div>
    </div>


    <!------------Form Start---------->


    <div id='form'>
    <div class="row">
    <div class="col-md-12">


    <form action="Create" method="POST" id="commentform">
    @Html.AntiForgeryToken()
    <div id="comment-name" class="form-row">
    @*<input type="text" placeholder="Name (required)" name="dname" id="name">*@
    @Html.Label("Name:")
    @Html.TextBoxFor(model => model.Name, new { @class = "form-control" })


    </div>
    <div id="comment-email" class="form-row">
    @*<input type="text" placeholder="Mail (will not be published) (required)" name="demail" id="email">*@
    @Html.Label("Email:")
    @Html.TextBoxFor(model => model.Email, new { @class = "form-control" })
    </div>


    <div id="comment-message" class="form-row">
    @*<textarea name="comment" placeholder="Message" id="comment"></textarea>*@
    @Html.Label("Your Comment:")
    @Html.TextAreaFor(model => model.CommentBox, new { @class = "form-control" })
    </div>
    <br />
    <input type="submit" value="Add" class="btn btn-default" />
    </form>


    </div>
    </div>
    </div>
    </div>




    <div>
    @Html.ActionLink("بازگشت به لیست", "Index","ContactUS",null, new { @class=""})
    </div>



  6. #6

    نقل قول: عدم مقدار دهی ParentID

    توی اکشن Create لیست ViewBag.contacts رو مقدار دهی کردین، اما توی ویو ازش استفاده نکردین، پس این مورد حذف بشه، بعدش شما اکشن Create HttpGet method رو به این شکل بازنویسی کنین:
    public ActionResult Create(int? parentId)       {

    ViewBag.ParentId= parentId;

    return View();
    }


    توی ویو هم داخل تگ فرم بعد از @Html.AntiForgeryToken() این خط رو اضافه کنین:
    @Html.Hidden("ParentId", ViewBag.ParentId)

    توی اکشن HttpPost method مربوط به Create پارامتر parentId رو حذف کنین و فقط پارامتر ابجکت ContactUs کافیه

    اینارو انجام بدین ببینین مشکل حل میشه یا خیر؟

    البته میتونین توی HttpGet method مربوط به Create به جای ViewBag یه ابجکت از کلاس ContactUs ایجاد کنین و فیلد ParentId رو مفدار دهی کنین و برای View بفرستین، در اینصورت توی ویو به جای @Html.Hidden از این خط استفاده کنین:
    @Html.HiddenFor(model=>model.ParentId)


  7. #7

    نقل قول: عدم مقدار دهی ParentID

    سلام. خیییییییلییییییی ممنونم حتما بررسی می کنم.
    آخرین ویرایش به وسیله raha raad : شنبه 25 آذر 1396 در 11:10 صبح

  8. #8

    نقل قول: عدم مقدار دهی ParentID

    سلام. خدا خیرتون بده. به لطف شما درست شد. خیلی ممنونم.
    من در ارسال و دریافت پارامترها گیج می شم. لطف می کنید بفرمایید چرا ParentId در متد Get دریافت شد نه در متد Post؟

  9. #9

    نقل قول: عدم مقدار دهی ParentID

    نقل قول نوشته شده توسط raha raad مشاهده تاپیک
    سلام. خدا خیرتون بده. به لطف شما درست شد. خیلی ممنونم.
    من در ارسال و دریافت پارامترها گیج می شم. لطف می کنید بفرمایید چرا ParentId در متد Get دریافت شد نه در متد Post؟
    ببینین، بصورت خیلی ساده در نظر بگیرین، وقتی شما دارین درخواست نمایش یک صفحه رو میدین (در اینجا فرض کنین داخل صفحه index هستین و روی لینک صفحه Create کلیک میکنین، این یعنی دارین درخواست نمایش صفحه create رو میدین) این درخواست به متد Get فرستاده میشه و صفحه رو واستون لود میکنه و فقط نمایش میده (ممکنه اکشن Create از نوع Get، پارامتر هم دریافت کنه، که باید توی URL واسش مشخص کنین حالا از طریق Html.ActionLink و یا از طریق خود تگ a)

    حالا اگه توی اون صفحه از فرم استفاده کرده باشین و نام اکشن و غیره رو مشخص نکرده باشین، وقتی فرم رو submit میکنین MVC خودش بصورت اتومات دنبال اکشنی با همون نام و از نوع POST میگرده (که با اتریبیوت HttpPost اون رو مشخص کردین) و اون فیلد هایی که توی فرمتون هست رو برای اون اکشن ارسال میکنه، حالا ممکنه شما یه کلاسی با همون فیلد ها ساخته باشین و توی متد POST به عنوان پارامتر بهش بدین، ام وی سی در قالب همون کلاس فیلد های موجود رو مقدار دهی میکنه و شما میتونین توی اکشن بهشون دسترسی داشته باشین (یا شایدم به ازای هر فیلد یه پارامتر ورودی برای اکشن تعریف کرده باشین، که بازم همه اون پارامتر ها مقدار دهی میشن، به شرطی که همنام فیلد های توی تگ فرم باشن)

    این چند تا لینک هم درمورد GET و POST نگاه بندازین:
    https://www.w3schools.com/tags/ref_httpmethods.asp
    https://stackoverflow.com/questions/...n-post-and-get
    barnamenevisan {DOT} org/Articles/Article3411.html

تاپیک های مشابه

  1. عدم نمایش divبدون مقدار دهی به ارتفاع آن
    نوشته شده توسط arian_P در بخش طراحی وب (Web Design)
    پاسخ: 3
    آخرین پست: سه شنبه 01 تیر 1389, 09:20 صبح
  2. پاسخ: 11
    آخرین پست: دوشنبه 09 فروردین 1389, 14:47 عصر
  3. عدم مقدار دهی صحیح در repeater
    نوشته شده توسط niloo17 در بخش ASP.NET Web Forms
    پاسخ: 7
    آخرین پست: دوشنبه 12 بهمن 1388, 10:14 صبح
  4. سوال: عدم مقدار دهی متغیر در switch case
    نوشته شده توسط sara_mp در بخش C#‎‎
    پاسخ: 10
    آخرین پست: یک شنبه 15 آذر 1388, 16:18 عصر
  5. مقدار دهی مستقیم در Datareport
    نوشته شده توسط sarina در بخش ابزارهای گزارشگیری در VB6
    پاسخ: 1
    آخرین پست: شنبه 04 بهمن 1382, 11:34 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •