2012-09-24 289 views
0

我正在开发MVC 3应用程序并使用剃刀语法。部分视图无法正常工作

在这个应用程序中,我给评论设施。

我在每个分部都添加了评论链接。 。当用户点击该评论链接时,它将加载包含用于添加评论的控件组的部分视图。

我使用列表来显式记录,当用户单击评论按钮时,我使用局部视图来加载评论控件。

现在的问题是,我只能为我不能在其他记录添加评论第一记录添加评论...

什么问题?

请检查下面的图片

enter image description here

这里是一个为其中DB添加注释,再次取回来的最新评论,查看,显示它的局部视图代码。

<script src="../../Scripts/jquery-1.5.1.min.js" type="text/javascript"></script> 
<script src="../../Scripts/jquery-1.8.0.min.js" type="text/javascript"></script> 

<script src="../../Scripts/jquery.validate.unobtrusive.min.js" type="text/javascript"></script> 
<script src="../../Scripts/jquery.unobtrusive-ajax.min.js" type="text/javascript"></script> 
<script src="../../Scripts/jquery.validate.min.js" type="text/javascript"></script> 


<script src="../../Scripts/jquery.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
    $(document).ready(function() { 
     $('#AddCommentButton').click(function() 

     { 
     var comment1 = $('#Comment').val(); 
     if (comment1 == '') { 
      alert('Please enter a comment'); 
      return; 
     } 


      $.ajax({ 

       type: 'post', 
       url: '/Comment/SaveComments', 
       dataType: 'json', 


       data: 
       { 

       'comments' : $('#Comment').val(), 
       'EType' : @Html.Raw(Json.Encode(ViewBag.EType)), 
        'EId' : @Html.Raw(Json.Encode(ViewBag.EId)) 

       }, 
       success: function (data) { 


            $("p.p12").append('<button type="button" id=' + data.Id + ' class="deleteComment2">Delete</button></div>') 



       } 

      }); 
     }); 
    }); 
</script> 

我用下面的代码,当我删除按钮点击...

<script src="../../Scripts/jquery.js" type="text/javascript"></script> 
<script type="text/javascript"> 

    $('.deleteComment').live('click', function() { 
     alert('Clicked'); 
    }); 

</script> 

现在,问题的总结是我追加DIV和该div我添加一个按钮和我我试图获得该按钮的点击事件,但我无法获得该事件。

任何人都可以请给简单的代码来处理按钮的点击事件时,按钮获得添加运行时在Div标记。

这里是达林季米特洛夫

@model IEnumerable<CRMEntities.Comment> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 


<!DOCTYPE html> 


<script src="../../Scripts/jquery.js" type="text/javascript"></script> 
<script type="text/javascript"> 

    $(document).on('click', '.deleteComment', function() 
    { 
    alert('comment deleted');  
}); 


$(document).ready(function() { 
alert("Doc loaded"); 

}); 
​ 

</script> 




<script src="../../Scripts/jquery.js" type="text/javascript"></script> 
<script type="text/javascript"> 

    $(document).ready(function() { 
     $('#AddCommentButton').click(function() { 

      $('#comments22').append('<input type="button" class="deleteComment" value="Delete" /><br/>'); 
      $('#comments22').append('<input type="button" class="deleteComment" value="Delete" /><br/>'); 
      $('#comments22').append('<input type="button" class="deleteComment" value="Delete" /><br/>'); 
      $('#comments22').append('<input type="button" class="deleteComment" value="Delete" /><br/>'); 
     }); 
    }); 
</script> 




<script src="../../Scripts/jquery.js" type="text/javascript"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $(".ShowComments").click(function() { 
      $(".ParentBlock").slideToggle("slow"); 

     }); 
    }); 
</script> 



</head> 
<body> 

@{ 





    <div class="ParentBlock"> 



    @foreach (var item in Model) 
    { 
     <div class="OwnerClass" id="OwnerName"> 


     <span class="EmpName"> @Html.ActionLink(item.Owner.FullName, "Details", "EMployee", new { id = item.OwnerId }, new { @style = "color:#1A6690;" })</span> 

      @Html.DisplayFor(ModelItem => item.CommentDateTime) 

      <span class="EmpName"><button type="button" id = "@item.Id" class="deleteComment">Delete</button></span> 



      <span class="EmpName"> @Html.ActionLink("Delete", "Delete", "Comment", new { id = item.Id }, new { @style = "color:#1A6690;" })</span> 


     <p class="CommentP"> 
      @Html.DisplayFor(ModelItem => item.CommentText) 
     </p> 

     <br /> 
      <a class="Delete222" style="cursor:move;display:none;">DeleteNew</a> 
     <br /> 

     </div> 


    } 


    <p class="p12"> 

     </p> 



</div> 

     <p id="ClassPara" class="ShowComments" onclick="chkToggle()">Show All Comments</p> 

} 



    @Html.TextArea("Comment", "", 5, 80, "asdsd") 


    <input type="button" value="Add Comment" id="AddCommentButton"/>       
    <input type="button" value="Clear" onclick="clearText()"/>      

    <br /> 

    <div id="comments22"> 
    <input type="button" class="deleteComment" value="Delete" /><br/> 
    <input type="button" class="deleteComment" value="Delete" /><br/>  
    <input type="button" class="deleteComment" value="Delete" /><br/> 


</div> 




</body> 
</html> 
+0

你能提供后面的任何代码? –

+0

请提供更多详情。 –

+0

我已upladted我的问题,请检查代码部分现在... – user1668543

回答

1

您已订阅的#AddCommentButton点击事件的更新代码。但是,正如你所知,ID在整个DOM中必须是唯一的。您只能拥有id="AddCommentButton"的1个元素。所以,你应该为你的Add Comment按钮使用类选择:

$('.addComment').click(...); 

和你的按钮:

<input type="button" value="Add Comment" class="addComment" /> 

而且我希望你采取的this answer注释。显然你没有,因为我仍然看到你在你看来硬编码的网址,而不是使用助手。

+0

它不是问题添加评论,其abt删除评论。附加的Div标签中新添加的按钮不起作用... – user1668543

+0

对不起Darin Dimitrov,其实我已经搞乱了我的代码...我已经按照你的提示......在另一个副本中有点......目前我只想获得新添加的按钮的点击事件... – user1668543

+0

为了获得新添加的按钮的点击事件,您需要使用'.on()'或'.delegate()'或'.live()'。同样在你的问题中,你说你在添加评论时遇到问题。你甚至提供了一个截图,你可以在其中解释它只适用于第一条评论,但不适用于随后的评论。原因如我在我的回答中解释的,因为你不能有多个具有相同ID的按钮,你需要使用类选择器。此外,如果这些添加注释按钮稍后添加到DOM,则应使用.on订阅其点击处理程序。 –

1

嗨,你可以得到你喜欢这个删除事件它的下面

$(".lnkDelete").click(function (e) { 
      e.preventDefault(); 
      var targeturl = $(this).attr("href"); 

and you can pass that targert url to your delete button like this 

window.location.href = targeturl; 

我认为这将有助于你....