نقل قول: عدم مقدار دهی ParentID
سلام
شما منظورتون این خطه؟ @Html.ActionLink("پاسخ", "Create", "ContactUS", new { parentId = @comment.Id }, new { @class = "", id = "btnReply_@comment.Id" })
این خط یه لینک واسه نوع GET اکشن Create رو ایجاد میکنه نه اکشن POST، شما واسه دریافت اون ایدی باید واسه اکشن Get پارامتر تعریف کنین
اما اگه مشکلتون توی نوع POST اکشن هستش لطفا کدای صفحه مربوط به اکشن create رو قرار بدین
نقل قول: عدم مقدار دهی ParentID
سلام در کد کنترلر اکشن create آورده شده.
مشکلم دقیقا اینه که وقتی می خوام برای یک کامنت پاسخی بنویسم، آن رو بعنوان یک کامنت جدید در نظر می گیره نه پاسخ کانتی که روی اون کلیک شده. وقتی بررسی کردم متوجه شدم دلیلش اینه که همواره parentId برابر با null در نظر گرفته میشه و مقدار parentId در مدل ست نمیشه. نمی دونم چطور این مشکل رو رفع کنم اینه که از شما مهندسین گرامی کمک خواستم.
نقل قول: عدم مقدار دهی ParentID
نقل قول:
نوشته شده توسط
mr.sirwan
@Html.ActionLink("پاسخ", "Create", "ContactUS", new { parentId = @comment.Id }, new { @class = "", id = "btnReply_@comment.Id" })
ببینین اصلا این خط درست نیست، چون همونطور که گفتم این لینکی به اکشن Get متد ایجاد میکنه، که توی اکشن Get متد که توی کنترلرتون هست اصلا پارامتری با این نام ندارین، این از این مورد
مورد بعدی اینه که کدای صفحه Create.cshtml رو قرار بدین، چون تا اونجایی که من مبینیم توی صفحه index کدی واسه ثبت کامنت ننوشتین، پس یعنی کدای درج کامنت جدید باید یه جای دیگه باشن، باید از تگ فرم برای پست کردن اطلاعات استفاده کنین
نقل قول: عدم مقدار دهی 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>
نقل قول: عدم مقدار دهی 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)
نقل قول: عدم مقدار دهی ParentID
سلام. خیییییییلییییییی ممنونم حتما بررسی می کنم.
نقل قول: عدم مقدار دهی ParentID
سلام. خدا خیرتون بده. به لطف شما درست شد. خیلی ممنونم.
من در ارسال و دریافت پارامترها گیج می شم. لطف می کنید بفرمایید چرا ParentId در متد Get دریافت شد نه در متد Post؟
نقل قول: عدم مقدار دهی 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