将Razor模型从Foreach传递到jQuery

本文关键字:jQuery Foreach Razor 模型 | 更新日期: 2023-09-27 18:29:26

好吧,我正在用Razor-foreach迭代模型,我想把模型发送到jQuery。我可以发送这个答案中的单个参数,但不能发送完整的对象。

示例:

<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; } 
 }

将Razor模型从Foreach传递到jQuery

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>