ASP.NET MVC场景,类似于StackOverflow上的“发布你的答案”

时间:2009-02-07 09:02:34

标签: jquery asp.net-mvc ajax

我需要在页面上添加评论系统(类似于任何SO问题底部的“发布你的答案”)。 实现这个的最佳方法是什么? 我应该使用Ajax渲染局部视图还是应该将Json数据传递给服务器? 在后一种情况下,我不太清楚我应该如何在现有注释的底部添加新添加的注释。

我对ASP.NET MVC非常陌生,并且对ajax模式不太满意。 另外,我听说,不引人注目的JavaScript的支柱是你的页面应该首先用JavaScript开发并且功能齐全,只有在开发人员应该添加JavaScript并增强体验之后。 这通常是正确的,在上述特定情况下是否正确?

谢谢。

PS。我正在使用jQuery。

4 个答案:

答案 0 :(得分:3)

观看Phil Haack对PDC的演示,他在那里建立了HaackOverflow:)

在此处获取视频: http://channel9.msdn.com/pdc2008/PC21/

他演示了使用内置的AJAX功能提交问题,并将其自动添加到现有问题的底部。

答案 1 :(得分:3)

我通常会使用JSON作为我的AJAX数据类型。 JSON (JavaScript Object Notation)它的工作原理与XML类似,但它使用的减少了70%的数据。您还会发现在您的JavaScript中解析更容易。 您不必从xml初始化日期/数字对象!

{ "people": [
  { "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" },
  { "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },
  { "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }
]}

Thanks IBM For The Example

<people>
  <person>
    <firstName>Brett</firstName>
    <lastName>McLaughlin</lastName>
    <email>brett@newInstance.com</email >
  </person>
  <person>
    <firstName>Jason</firstName>
    <lastName>Hunter</lastName>
    <email>jason@servlets.com</email >
  </person>
  <person>
    <firstName>Elliotte</firstName>
    <lastName>Harold</lastName>
    <email>elharo@macfaq.com</email >
  </person>
</people >

我发现 MVC JSON框架有一些不足,关于序列化,反序列化和&amp;忽略成员属性。我在codeplex上找到了Json.NET项目。它接缝填补了MVC JSON未涵盖的所有功能差距。

所以在你的控制器中,我使用的是Json.NET,请注意输出是ContentResult,有视图

 public ContentResult ProcessRequestAction(string Email, string Password)
 {
     Product product = new Product();
     product.Name = "Apple";
     product.Expiry = new DateTime(2008, 12, 28);
     product.Price = 3.99M;
     product.Sizes = new string[] { "Small", "Medium", "Large" };
     return Content(JavaScriptConvert.SerializeObject(product));
 }

JSON请求的典型JQuery代码

      $.ajax({
            type: "POST", /* GET OR POST */
            url: "JSON_MVC_URL_HERE", /* your url here */
            dataType: "json", /* json or xml */
            data: null, /* JSON CODE HERE TO SET GET OR POST BACK PARAMS */
            success: function(data){
                alert(data.Name); /* Gets Name Element */
                alert(data.Expiry); /* Gets Expiry Element */
                alert(data.Price); /* Gets Price Element */
                jQuery.each(data.Sizes, function() { /* Get Each Size */
                    alert(this);
                });
            }
        });

$。getJSON也可以,但缺少http请求类型POST / GET

答案 2 :(得分:0)

回应第2段:

是的,我建议在没有任何类型的ajax / js的情况下开发应用程序。确保操作正常工作。然后在以后添加ajax(用于UX)。这种方法也可以鼓励你如何让应用程序回归到非js用户(如手机)的非ajax方法

答案 3 :(得分:0)

使用disqus:http://www.disqus.com