【问题标题】:Quotes in Asp.NET MVC ViewAsp.NET MVC 视图中的引号
【发布时间】:2012-08-30 20:59:20
【问题描述】:

在视图中,

@{
    Layout = "~/Views/Shared/site.cshtml";
    ViewBag.Title = "Organizations";

    var organizations = "";
    foreach (var org in Model)
    {
        organizations += "'" + org.Name + "':'" + org.Id + "',";
    }
    organizations = organizations.Substring(0, organizations.Length - 1);
}

结果操作:organizations = "'Passport':'14f0eac0-43eb-4c5f-b9fe-a09d2848db80','Bank':'ad1d77d8-7eb1-4a4c-9173-b0f2f7269644'";

在JS代码段中输出数据。 但是在浏览器中查看页面的源代码时,并没有得到想要的东西。 有什么问题?如何制作正常的引号?

JS:"data": "@organizations"

查看网页结果返回"data": "'Passport':'14f0eac0-43eb-4c5f-b9fe-a09d2848db80','Bank':'ad1d77d8-7eb1-4a4c-9173-b0f2f7269644'"

【问题讨论】:

    标签: asp.net asp.net-mvc razor view


    【解决方案1】:

    OK酷Q,试试这个来源:

    @{
        var model = Model.ToArray().Select(org => string.Format("'{0}':'{1}'", org.Name, org.Id));
        var data = string.Join(",", model);
    }
    
    @Html.Raw(data)
    

    【讨论】:

      【解决方案2】:

      如果你改变了怎么办

      "data": "@organizations"
      

      "data": "@Html.Raw(organizations)"
      

      【讨论】:

        【解决方案3】:
        【解决方案4】:

        在您的代码示例中,罪魁祸首是

        @organizations
        

        生成引号。您可以改为使用:

        @Html.Raw(organizations)
        

        好的,这很好,但是通过创建 JSON,您正在做框架可以为您做的工作。您可能想要一个框架可以为您序列化的模型。这样,您甚至根本不需要视图标题中的任何代码。

        @Html.Raw(JsonConvert.SerializeObject(Model.ToDictionary(m => m.Name, m => m.Id))))
        

        在上面,请注意我正在使用 Json.NET,您可能希望将 NuGET 加入到您的项目中,因为 Microsoft 正在向它迁移。弄清楚如何使用旧的 JSON 序列化程序来执行此操作毫无意义。另请注意,除非您将模型用于其他目的,否则您可能会选择在视图之外进行字典转换,从而减少视图中的代码工作。

        接下来,如果您在视图中嵌入 JSON,您可能需要考虑其他两个选项之一。如果数据量很小,请考虑使用the join method proposed by eli (here),而是将其编码为 HTML 5“data-”元素并使用 JavaScript 加载它。这样,您就可以将 javascript 排除在您的视野之外。这只是在调试 javascript 时更加混乱的一步,寻找由动态生成的 HTML 初始化的变量。

        更好的是,创建一个可重用的 HTML 辅助方法来将您的模型转换为数据属性:How to use dashes in HTML-5 data-* attributes in ASP.NET MVC

        最后,如果有很多 JSON 元素,请考虑单独发送数据。使用控制器中的简单 Json() 方法渲染它,并在客户端代码中使用简单的 jQuery $.json() 获取它。见here for an example

        祝你好运!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-03-11
          • 1970-01-01
          • 2010-10-13
          • 2010-11-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多