将Razor模型从Foreach传递给jQuery

时间:2014-11-07 04:36:16

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

好的,所以我正在使用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(公司对象,而不是字符串)将发送字符串值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; } 
 }

1 个答案:

答案 0 :(得分: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>