我有一个显示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
时,我想通过ajax将相应电影的序列化Movie
类发送到我的控制器。
我的问题是......
有没有更好的方法来序列化每部电影并将其附加到相应的锚点?我知道有data-
html5属性,但我认为它们只允许字符串值,而不是json对象。我也知道我可以使用jQuery的.data()
函数,但是我很难思考如何从PartialView运行,特别是因为_MoviePartial.cshtml
呈现的html可能通过ajax从控制器返回
答案 0 :(得分:0)
我的首选是返回一个JSON对象作为具有两个属性的响应; HtmlString和数据。 HtmlString可能包含呈现的局部视图,而Data可能包含请求的序列化对象。
我发现使用JSON非常容易,然后尝试返回带有嵌入式JSON对象的HTML。
答案 1 :(得分:0)
像knockout.js这样的框架真的会让你的生活变得更轻松。
基本上,你会:
Json.Encode(Model);