باسلام
بنده مثال MyCMS کلاس را پیاده سازی کردم یه مشکل کوجکی داشتم :
در انتهای صفحه خبر پارشال ویوی مربوط به نظرات را صدا زدم به شکل زیر:
@Html.Action("NewsComment", "News", new { pageid = @Model.pageID })
و متود مربوط به آن در کنترلر News به صورت زیر می باشد:
باتشکر از راهنمائی ,
یه سوال دیگه برام پیش آمده و اینکه در مثالی که جناب مدائنی انجام دادن در زمان صدا زدن متود مربوط به نمایش نظرات :
@Html.Action("ShowComment")
هیچ اشاره ای به کد خبر نشده ولی خودش تشخیص میده که نظرات مربوط به کدام خبر را نشان بده , چطور این را تشخیص میده ؟!
با تشکر از وقتی که می گذارید
ارادتمند شایان فر
کد را اگر قرار بدید که بتونیم روی کد صحبت کنیم بهتره.
نمونه کد اکشن را قرار بدید بی زحمت.
public ActionResult ShowComment(int id)
{
return PartialView(db.PageComments.Where(p => p.PageID == id).ToList());
}
كد اكشن .
باتشكر مجدد.
دوست عزیز id ورودی متد به صورت خودکار از پارامتر صفخه پر میشه
فقط شما باید در آدرسی دهی Rout جای PageID از ID استفاده کنید
سلام مجدد
نام پارامتر ورودي را به id تغيير دادم ولي پيغام خطاي زير را دريافت مي كنم
The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult ShowComments(Int32)' in 'login.Controllers.NewsController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
Parameter name: parameters
ممنون از توجه شما.
ورودی متد را نیز باید تغییر دهید
سلام مشكل را فهميدم
توي Rote مربوط به Action متود نمايش خبر بجاي id نوشته بودم pageid:
يعني [Route("News/{pageid}")]
كه با تغييرش به
[Route("News/{id}")]
درست شد
ممنون
يه مشكل ديگه !!
زماني كه ثبت نظر را صدا مي زنم تو قسمت جاوا خطاي مربوط به Undefined دريافت مي كنم :
http://localhost:9639/News/SaveComment?pageID=1&Email=undefined&userName=undefined&Comment=undefined
در جا نیز باید به صورت Rout عمل کنید
نمیتونید از QueryString استفاده کنید چون Routing استفاده کردید
متوجه نمی شم !
فکر کنم من سوالم را درست مطرح نکردم
متود و فانکشن های جاوا را براتو می فرستم:
اکشن متود SaveComment:
public ActionResult SaveComment(int pageID, string Email, string userName, string Comment)
{
pageComment Pcom = new pageComment();
Pcom.pageID = pageID;
Pcom.Email = Email;
Pcom.Comment = Comment;
Pcom.UserName = userName;
Pcom.CreateDate = DateTime.Now;
db.PageComments.Add(Pcom);
db.SaveChanges();
return PartialView("ShowComments", db.PageComments.Where(p => p.pageID == pageID));
}
فانکشن جاوا برای ذخیره هم به صورت زیر نوشتم:
<script>
function CreateCom(id)
{
debugger;
alert($('#Email').val);
$.ajax(
{
url: "/News/SaveComment",
type: "Get",
data: { pageID: id, Email: $('#Email').val, userName: $('#UserName').val, Comment: $('#Comment').val }
}
).done(function (result)
{
$('#listcomment').html(result);
$('#Email').val('');
$('#UserName').val('');
$('#Comment').val('');
});
}
</script>
پارشال ویوی ایچاد نظر هم بصورت زیر :
@model login.Models.pageComment
<div class="form-horizontal">
<h4>ثبت نظر شما</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.Email, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Email, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Email, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.UserName, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.UserName, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.UserName, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Comment, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Comment, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Comment, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" onclick="CreateCom(@ViewBag.PageID)" />
</div>
</div>
</div>
زمانی که دکمه ذخیره را کلیک می کنم هیچ اتفاقی نمی افته وقتی با FireBug دیباگ می کنم در بخش کنسول خطا مربوط نشناختن آیتم های نظر مثل Email , UserName , Comment را می بینم :
http://localhost:9639/News/SaveComment?pageID=1&Email=undefined&userName=undefined&Comment=undefined
همه مراحل را مثل خودت.ن انجام دادم ولی نمی دونم چرا کار نمی کنه !!
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)