2011-12-25 33 views
1

我有一个页面,我正在显示笔记,点击一个按钮后,我希望能够添加一个笔记。以下代码是我尝试加载创建注释操作结果的部分。点击按钮后的部分负载MVC

<script type="text/javascript"> 
    (function() { 
    $('#load-partial'.click(function(){ 
     $('#partial'.load('/EntityController/CreateNote/');}); 
    })();  
</script> 

<div id="partial"></div> 
<button type="button" id="load-partial" /> 

但是,单击该按钮不会执行任何操作。这里出了什么问题?

回答

1

非常好的建议,由达林季米特洛夫。要进入一个新的水平

您需要使用网址助手:$( '#部分')负载('@网址。行动(“CreateNote”,“实体”)');

为了让这个不显眼的(和移动Java脚本到一个文件),你需要使用@URL助手来设置action属性/值,然后收获行动在JavaScript属性值。在待处理的DropDownList的教程中,我做到以下几点:

 @using (Html.BeginForm("IndexDDL", "Home", FormMethod.Post, 
new { id = "CountryStateFormID", 
StateListAction = @Url.Action("StateList") })) { 

- 然后在JavaScript

$('#CountriesID').change(function() { 
    var CountryStateFormID = $('#CountryStateFormID'); 
    $.getJSON(CountryStateFormID.attr('StateListAction') + '/' + $('#CountriesID').val(), function (data) { 

您还应该使用IE9/F12开发人员工具或Chrome或FF调试代码。

1

这里出了什么问题?

对于初学者,您在显示的内容中有很多javascript错误。在订阅诸如click之类的事件之前,也不等待DOM准备就绪。您只需创建一个匿名函数,即可立即执行,而无需等待DOM准备就绪。它应该是这样的:

<script type="text/javascript"> 
    $(function() { 
     $('#load-partial').click(function() { 
      $('#partial').load('@Url.Action("CreateNote", "Entity")'); 
     }); 
    });  
</script> 

<div id="partial"></div> 
<button type="button" id="load-partial" /> 

除此之外,有可能是类似的东西gazillions可以去错在这里(不幸的是,我们不能从穷人代码排除片断您提供):

  • 你忘了你已经证明
  • 你引用的jQuery脚本后引用的jQuery
  • 你引用的jQuery但提供了错误的URL
  • 控制器的行动,建议立即进行删除d返回部分不存在
  • 应返回部分的控制器操作抛出异常
  • 应该返回部分的控制器操作不会引发异常,但它不会在部分视图中找到部分视图搜索(按惯例)位置
  • 应该返回部分的控制器操作不会抛出异常并且它会找到部分内容,但是在此部分中存在错误(错误的语法,空引用异常,...此列表将进入到无穷大)
  • 当您为动作生成url时,您没有使用url助手,因此如果您在虚拟目录中部署此应用程序/EntityController/CreateNote/ url是proba bly错误。您需要使用url助手:$('#partial').load('@Url.Action("CreateNote", "Entity")');
  • 您使用/EntityController作为控制器名称,但根据约定,Controller后缀仅在命名控制器类时使用,而不在引用url时使用。因此,该网址应该可能是/entity/createnote(请参阅上一个用于生成网址的正确方法的原因)。
  • 你有一些JavaScript错误,你没有显示的网页的一部分。使用诸如FireBug之类的JavaScript调试工具来调试您的脚本和AJAX请求。
  • ...这个例子不胜枚举到无穷远
+0

谢谢你的建设性的批评和我如何能提高我在未来的问题的那种指针。 – 2011-12-25 14:02:26

+0

>>。你需要使用url助手:$('#partial')。load('@ Url.Action(“CreateNote”,“Entity”)'); – RickAndMSFT 2011-12-25 18:07:01