【问题标题】:ASP.NET MVC scenario, similar to 'Post your answer' on StackOverflowASP.NET MVC 场景,类似于 StackOverflow 上的“发布您的答案”
【发布时间】:2009-02-07 09:02:34
【问题描述】:

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

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

谢谢。

PS。我正在使用 jQuery。

【问题讨论】:

    标签: jquery asp.net-mvc ajax


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢@haacked 的有趣演示 :) 我只记得链接。
    【解决方案2】:

    我通常会使用 JSON 作为我的 AJAX 数据类型。 JSON(JavaScript 对象表示法)它的工作方式与 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 框架在序列化、反序列化和忽略成员属性方面存在一些不足。我在 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));
     }
    

    典型的 JQuery 代码,用于 JSON 请求

          $.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

    【讨论】:

      【解决方案3】:

      回应第二段:

      是的,我建议在没有任何 ajax/js 的情况下开发应用程序。确保操作正常运行。然后稍后添加 ajax(用于 UX)。这种方法也可能有助于启发您如何让应用回退到非 js 启用用户(如手机)的非 ajax 方法

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • +1:你确实不值得投反对票……disqus 是一个值得选择的选择。
        猜你喜欢
        • 2011-03-26
        • 2023-04-04
        • 1970-01-01
        • 2018-04-13
        • 1970-01-01
        • 2011-05-20
        • 1970-01-01
        • 1970-01-01
        • 2018-02-14
        相关资源
        最近更新 更多