0

我是新手,不知道它必须如何工作。

我的视图中有一个部分视图,foreach其中列出了该新闻文章的所有新闻评论。

我有一个带有post按钮的文本区域,用户可以在其中提交对这篇新闻文章的进一步评论。

新的新闻文章必须附加到列表中,而无需执行location.reload. 有人告诉我不要AJAX使用JSON

这是我的控制器:

[HttpGet]
[NoCache]
public ActionResult SetCommentOnNews(int newsId, string newsComment) ??
{
  var currentUser = ZincService.GetUserForId(CurrentUser.UserId);
  ZincService.NewsService.SetCommentOnNews(newsId, newsComment, currentUser.UserId);
  return Json(new { success = true }, JsonRequestBehavior.AllowGet); ??
}


 <div class="news-comment-content" id="news-comment-content">
      <%  if (Model.Results != null) { 
         foreach (var newsItem in Model.Results.NewsComments) %>
      <% {  %>   
         <% Html.RenderPartial("~/Views/Home/SetCommentOnNews.ascx", newsItem); %>
      <% }  %>
 </div>

我的部分:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Zinc.Web.Areas.News.ViewModels.Home.NewsCommentsViewModel>" %> //this also not right

<div class="news-post-list-item">
  <div class="news-post-user-info-wrapper">
    <div class="avatar">
       <img width="52" height="52" alt="Avatar" src="/ThemeFiles/Base/images/User/user-avatar.png"/> 
    </div>
    <div class="who-and-when-box">
      <%: newsItem.CommentDate %>
      <br />
      <br />
      <%: ViewBag.UserName %>
    </div>        
    <div class="news-comment"><%: newsItem.NewsComment %></div>
    <div class="clear"></div> 
  </div>     
  <div class="clear"></div> 
</div> 

<div class="header">
  <h3>
      Leave a comment 
  </h3>
</div>
<div>  
  <textarea id="textareaforreply" rows="3" cols="160"></textarea>
</div>
<div>
  <a href="javascript:PostNewsComment(<%: Model.News.NewsId %>);" class="button" id="post_button">Post</a>     
</div>

 <script type="text/javascript">
 function PostNewsComment(newsId) {
   $("post-button").click(function () {
       var jqxhr = $.getJSON("<%= //Url.Action("SetCommentOnNews", "Home", new { area = "News" }) %>?newsId=" + newsId + "&newsComment=" + $("#textareaforreply").text(), function (data) {
     if (data.success) {
       alert($("#textareaforreply").text());
       $('#news-comment').append($("#textareaforreply").text());
     }
   });
 }
</script>

上面的 JS 是我拥有的并且必须HTML使用AJAX? 我不知道该怎么做。有人可以帮忙吗?

谢谢

4

1 回答 1

0

要使用 AJAX 将 HTML 注入列表,我将使用带有模板而不是局部视图的 Knockoutjs。Knockout 可用于在浏览器中呈现信息。视图用于渲染服务器端,这与 AJAX 不兼容。

当您说“有人告诉我使用 AJAX,而不是 JSON”时,您是什么意思。AJAX 使用 JSON 作为序列化通过网络发送的数据的方法。您是指 JQuery 方法ajaxgetJSON吗? getJSON只是ajax方法的一个包装器,它专门配置它以使用 HTTP GET 动词检索 JSON。两者都可以正常工作,但 ajax 确实让您可以更好地控制配置请求。

于 2012-12-21T14:15:43.180 回答