2012-07-03 5 views
1

Я создал раздел комментариев на странице «Сведения», но когда кто-то комментирует на одной специальной странице, он отображается на каждой странице страницы «Подробности». Я не знаю, где проблема.Раздел комментариев в ASP.NET WebPage

Специально я застрял внутри цикла foreach внутри кода.

Вот код:

@{ 
dynamic item = null; 
if(!Request["id"].IsEmpty() && Request["id"].IsInt()) { 
var db = Database.Open("Classifieds"); 
var sql = "SELECT * FROM Items, Categories WHERE Id = @0"; 
item = db.QuerySingle(sql, Request["id"]); 
Page.Title = item.Title + "-" + item.Id; 
} 


if(IsPost) { 
if(Request["name"].IsEmpty()) { 
ModelState.AddError("name", "Please provide a name"); 
} 
if(Request["email"].IsEmpty()) { 
ModelState.AddError("email", "Please enter your E-mail"); 
} 
if(!Request["email"].IsEmpty() && !Functions.IsValidEmail(Request["email"])) { 
ModelState.AddError("email","Please provide a valid email"); 
} 
if(Request["comment"].IsEmpty()) { 
ModelState.AddError("comment", "Please fill the comment form"); 
} 
if(!ModelState.IsValid) { 
ModelState.AddFormError("Please fix the errors below before submitting your comment"); 
} 

else { 
**var db = Database.Open("Classifieds"); 
var msql = @"INSERT INTO Comments (Name, Email, Comment, DatePosted) VALUES (@0, @1, @2, GetDate())"; 
var parameters = new[]{Request["name"],Request["email"],Request["comment"]}; 
db.Execute(msql, parameters) ; 
Response.Redirect("~/Details.cshtml?id=" + item.Id);** 
} 
} 
**var dbs = Database.Open("Classifieds"); 
var tsql = @"SELECT Id, Name, Email, Comment, DatePosted FROM Comments"; 
var data = dbs.Query(tsql).OrderByDescending(c => c.Id);** 

} 

<!DOCTYPE html> 

<html lang="en"> 
<head> 
<meta charset="utf-8" /> 
<title></title> 
<script type="text/javascript"> 
function resetForm() { 
document.getElementById("name0").value = ""; 
document.getElementById("email0").value = ""; 
document.getElementById("comment0").value = ""; 
} 
</script> 
</head> 
<body> 
@if(item != null) { 
<h2>Details</h2> 
<h3>@item.Title</h3> 
<p>@item.Description</p> 
<p>Price: @item.Price.ToString("c")</p> 
<p>Condition: @item.Condition</p> 
<p>Posted on @item.DatePosted.ToString("D") in the @item.Category category</p> 
} 




<br><br><hr> 

<div>@Html.ValidationSummary(true)</div> 

<form id="post-advert" method="post" action="@Href("~/Details.cshtml?id=" + item.Id)"> 
<div data-href="@Href("~/Details.cshtml?id=" + item.Id)"> 
**@if(item.Id == Request["id"].AsInt()) { 
foreach(var dt in data) { 
<div id="namecomment">Posted by @dt.Name at @dt.DatePosted</div><br> 
<div id="commentsection">@dt.Comment</div><hr> 
Cache.Remove(dt.ToString()); 
} 
}** 

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

<div><label for="name">Name* : </label></div> 

<div><input type="text" name="name" id="name0" value="@Request["name"]"> 
@Html.ValidationMessage("name") 
</div> 

<div><label for="email">E-mail* : </label></div> 
<div> 

<input type="text" name="email" id="email0" value="@Request["email"]"> 
@Html.ValidationMessage("email") 
</div> 

<div><label for="comment">Comment* : </label></div> 
<div> 
<textarea name="comment" cols="40" rows="10" id="comment0" >@Request["comment"]</textarea> 
@Html.ValidationMessage("comment") 
</div><br> 
<div><input type="submit" value="Post Comment"></div> 
</form> 
</body> 
</html> 
+0

Что происходит? Это ошибка? Пожалуйста, укажите проблему – c0deNinja

ответ

1

Это происходит потому, что у вас нет ничего, что однозначно идентифицирует, что комментарий для. При хранении/извлечение комментария вы предоставляете

  • Name
  • EMail
  • Комментарий
  • DatePosted

ничего, чтобы указать, какие детали страницы вы показываете. Вы должны добавить свой идентификатор в таблицу и последующие запросы.

Смежные вопросы