2015-06-19 2 views
0

Я пытаюсь добавить комментарии к теме, выбранной из списка созданных тем, У меня есть список тем, и я выбираю один из них. выбранная тема загружает свое представление своими комментариями из-за идентификатора темы. В выбранном разделе темы я хочу добавить комментарий, поэтому в сообщении комментария добавляется комментарий (в таблице), но не может возвращаться или перенаправляться на просмотр (темы с комментариями), потому что это представление является результат этого идентификатора темы. , так что я ищу способ, с помощью которого его возврат возвращается к представлению после добавления комментария с идентификатором вида темы ... или есть другой способ решения этого вопроса. .. Мне действительно нужна помощь здесь ...ASP.NET MVC: id не отправлен на пост или удалить в 'view by id'

это ошибка, я получаю

Server Error in '/' Application. 

The model item passed into the dictionary is of type 'System.Int32', but this dictionary requires a model item of type 'TechForum.Models.ForumViewModel'. 

ниже мой код, который загружает комментарии в тему ....

ВНУТР идентификатор "является идентификатором темы из списка

[HttpGet] 
    public ActionResult Comments(ForumViewModel model, int id) 
    { 
     DataSet ds = WebService.GetCommentsByTopic(id); 

     List<CommentModel> commentModelList = new List<CommentModel>(); 

     DataTable dt = ds.Tables[0]; 

     foreach (DataRow dr in dt.Rows) 
     { 
      CommentModel _commentModel = new CommentModel(); 

      _commentModel.COMMENTID = Int32.Parse(dr["COMMENTID"].ToString()); 
      _commentModel.TOPICID = Int32.Parse(dr["TOPICID"].ToString()); 
      Session["topicid"] = Int32.Parse(dr["TOPICID"].ToString()); 
      _commentModel.COMMENT = dr["COMMENT"].ToString(); 
      _commentModel.COMMENT_DATE = DateTime.Parse(dr["COMMENT_DATE"].ToString()); 

      commentModelList.Add(_commentModel); 
     } 
     model.COMMENTLIST = commentModelList; 

     return View(model); 
    } 

ниже код для добавления комментариев

Я попытался пропусканием идентификатор темы с точки зрения HttpGet комментария к сообщению комментарий через сеанс

[HttpPost] 
    public ActionResult Comments(ForumViewModel model) 
    { 
     try 
     { 

      WebService.AddComment(int.Parse(Session["memberid"].ToString()), int.Parse(Session["topicid"].ToString()), model.COMMENTS.COMMENT, DateTime.Parse(model.COMMENTS.COMMENT_DATE.ToString())); 

      int id = int.Parse(Session["topicid"].ToString()); 
       ViewData["output"] = "Comment Added"; 
       return View("Comments", id); 

     } 
     catch (Exception er) 
     { 
      ViewBag.errormsg = er.Message; 
      ViewData["output"] = "Comment not added"; 
     } 
     return RedirectToAction("Comment", int.Parse(Session["topicid"].ToString())); 
    } 

тот же подобный вопрос для удаления из которых я попытался мимо двух идентификаторов к представлению, как показано ниже, один взять идентификатор комментария его о удалить, а другой (id2) отправить обратно идентификатор темы с точки зрения

@Html.ActionLink("x", "DeleteComment", new { id = item.COMMENTID, id2 = item.TOPICID} 

быть низким является удаление действия

public ActionResult DeleteComment(int id, int id2) 
    { 
     WebService.DeleteComment(id); 
     ForumViewModel model = new ForumViewModel(); 

     DataSet ds = WebService.GetCommentsByTopic(id2); 

     List<CommentModel> commentModelList = new List<CommentModel>(); 

     DataTable dt = ds.Tables[0]; 

     foreach (DataRow dr in dt.Rows) 
     { 
      CommentModel _commentModel = new CommentModel(); 
      _commentModel.COMMENTID = Int32.Parse(dr["COMMENTID"].ToString()); 
      _commentModel.TOPICID = Int32.Parse(dr["TOPICID"].ToString()); 
      _commentModel.MEMBERID = Int32.Parse(dr["MEMBERID"].ToString()); 
      _commentModel.COMMENT = dr["COMMENT"].ToString(); 
      _commentModel.COMMENT_DATE = DateTime.Parse(dr["COMMENT_DATE"].ToString()); 

      commentModelList.Add(_commentModel); 

     } 
     model.COMMENTLIST = commentModelList; 
     ViewData["success"] = "Comment Deleted"; 
     return RedirectToAction("Comments", model); 
    } 

ответ

0

Вы можете просто поставить TopicID в ForumViewModel и иметь его как скрытое поле в окне, который настроен на то, что вы хотите, чтобы она прошла вокруг в модели. Не понимаю, почему это не сработает.

+0

@Boman. Не могли бы вы объяснить больше, потому что я не очень хорошо знаком со скрытым полем –

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

  • Нет связанных вопросов^_^