【问题标题】:Pass Razor Model From Foreach To jQuery将 Razor 模型从 Foreach 传递给 jQuery
【发布时间】:2015-01-03 19:48:16
【问题描述】:

好的,我正在使用 Razor foreach 迭代模型,我想将模型发送到 jQuery。我可以发送单个参数as seen in this answer,但不能发送完整的对象。

例子:

<table>
@foreach (var contact in Model)
{
    <tr>
        <td>
            <a href="#" onclick="myFunction('@contact.Name')">@contact.Name</a>
        </td>
        <td>
            <a href="#" onclick="myFunction('@contact.Company')">@contact.Company.Name</a>
        </td>
    </tr>
}
</table>

<script type="text/javascript">
    function myFunction(contact) {
        console.log(contact);
    };
</script>

这里,发送@contact.Name 将按预期将Name 中的值发送到函数,但@contact.Company(这是一个Company 对象,而不是字符串)将发送字符串值ProjectName.Models.Company。有可能做我想做的事吗?

这是我正在使用的其中一个实际模型的示例(请注意,我使用的每个模型,例如这个模型,也有另一种对象类型作为字段)。

 public class Note
 {
   public long NoteId { get; set; }
   public string Content { get; set; }
   public DateTime CreatedOn { get; set; }
   public User CreatedBy { get; set; } 
 }

【问题讨论】:

  • 您想将Company 模型发送给函数(这样您就可以访问Company 的所有属性,还是只想发送Company.Name 属性?

标签: c# jquery asp.net-mvc razor


【解决方案1】:

Javascript 没有模型的概念,但您可以对其进行编码并将其解析为 javascript 对象,以便您在脚本中访问其属性

<a href="#" onclick="myFunction(JSON.parse('@Html.Raw(Json.Encode(contact.Company))'))">@contact.Company.Name</a>

<script type="text/javascript">
  function myFunction(company) {
    console.log(company.Name);
  };
</script>

【讨论】:

  • 这实际上是在给我抛出一个错误 (Uncaught SyntaxError: Unexpected token ILLEGAL)。如果我在 JS 函数中调用JSON.parse,而不是内联,它可以正常工作。
  • 那是因为另一个问题。如果您为Company 发布您的模型,我可以看看。 (注意“仅链接答案”可能会被版主删除)
  • 是的,当然。我在底部添加了一个模型。我还注意到,我正在使用的所有模型中都有其他对象作为字段,不确定这是否是导致错误的原因。
  • 这应该不是问题。如果Notecontact 的属性并且您使用onclick="myFunction(JSON.parse('@Html.Raw(Json.Encode(contact.Note))'))", then in the script, add console.log(company);` 您应该看到类似Object {NoteId : 1, Content : "Some text", CreatedBy: Object} 的内容(您可以展开CreatedBy 以查看User 的属性) .可能导致问题的一件事是您是否有任何循环引用。例如,Note 具有 User 的属性,该属性具有 Note 的属性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-08
  • 2018-08-30
  • 2020-04-24
  • 1970-01-01
  • 2017-02-16
  • 2013-06-03
  • 2021-12-01
相关资源
最近更新 更多