1

我有一个显示IEnumerable<Movie>.

_MoviePartial.cshtml

@foreach(var movie in Model) {
    <div class="content">
        <span class="image"><img src="@movie.Posters.Profile" alt="@movie.Title"/></span>
        <span class="title">@movie.Title</span>
        <div class="score`">
            <span class="critics-score">@movie.Ratings.CriticsScore</span>
            <span class="audience-score">@movie.Ratings.AudienceScore</span>
        </div>
        @Html.ActionLink("Add Movie", "Add", "MyMovies")
    </div>
}

当用户单击“添加电影”ActionLink 时,我将发布一个 ajax 帖子以将所选电影添加到用户集合中。我的问题是我想将整个选定的Movie类发送到“添加”操作,但不确定如何序列化每部电影,因为整个Movie类没有在 PartialView 中呈现,只有几个属性。我知道我可以序列化这样的东西......

<script type="text/javascript">
    var obj = @Html.Raw(Json.Encode(movie));
</script>

但我不确定这将如何在呈现 html 的 foreach 循环中工作,尤其是在PartialView.

因此,为了清楚起见,当用户单击“添加电影”时,ActionLink我想Movie通过 ajax 将相应电影的序列化类发送到我的控制器。

我的问题是...

有没有更好的方法来序列化每部电影并将其附加到各自的锚点?我知道有data-html5 属性,但我认为它们只允许字符串值,而不是 json 对象。我也知道我可以使用 jQuery 的.data()函数,但我正在努力思考如何让它从 PartialView 运行,特别是因为渲染的 html_MoviePartial.cshtml可能通过 ajax 从控制器返回。

4

2 回答 2

0

我的偏好是返回一个 JSON 对象作为具有两个属性的响应;HtmlString 和数据。HtmlString 可能包含渲染的局部视图,Data 可能包含请求的序列化对象。

我发现使用 JSON 非常容易,然后尝试返回带有嵌入 JSON 对象的 HTML。

于 2012-10-28T04:56:56.553 回答
0

knockout.js这样的框架真的会让你的生活更轻松。

基本上,你会:

  1. 使用以下命令将所有电影数据加载为 JSON 数组:Json.Encode(Model);
  2. 使用敲除创建一个foreach 模板来呈现您的数据。然后,Knockout 将处理将显示的电影保持为完整电影模型的麻烦。
于 2012-10-28T06:04:38.383 回答