MVC3 アプリで同じツリー スライドを実装しようとしていますが、それが正しいかどうか完全にはわかりません。
インデックスページ:
<script type="text/javascript">
$(document).ready(function () {
$('#slider a').click(function () {
history.pushState({ path: this.path }, '', this.href);
$.get(this.href, function (data) {
$('#slider').slideTo(data);
});
return false;
});
});
</script>
@{Html.RenderAction("MainTableTracker", "Release", new { releaseId = Model });}
MainTableTracker 部分ビュー:
<script type="text/javascript">
$(document).ready(function () {
$('#slider a').click(function () {
history.pushState({ path: this.path }, '', this.href);
$.get(this.href, function (data) {
$('#slider').slideTo(data);
});
return false;
});
});
</script>
<div id="slider">
@Html.RouteLink(Model.Brand.Name, "Brand", new { BrandId = Model.Brand.Id }) /
<ul>
<li><a href="#">Overview</a></li>
@foreach(var model in Model.ModelExts)
{
<li>@Html.RouteLink(model.Model.Name, new { modelId = model.Model.Id })</li>
}
</ul>
</div>
VersionTable 部分ビュー:
<script type="text/javascript">
$(document).ready(function () {
$('#slider a').click(function () {
history.pushState({ path: this.path }, '', this.href);
$.get(this.href, function (data) {
$('#slider').slideTo(data);
});
return false;
});
});
</script>
<div id="slider">
@Html.RouteLink(Model.Brand.Name, "Brand", new { BrandId = Model.Brand.Id }) / @Html.RouteLink(Model.Name, "Model", new { modelId = Model.Id }) /
<ul>
<li><a href="#">Overview</a></li>
@foreach(var model in Model.Brand.Model)
{
<li>@Html.RouteLink(model.Name, new { modelId = model.Id })</li>
}
</ul>
<div class="versionWraper">
@foreach(var version in Model.Version)
{
<div>
@version.Name
</div>
}
</div>
</div>
これは機能しますが、間違っていると確信しています.3つの異なるビューが親ビューのコードを毎回コピーするべきではないと思います。
ビューモデルを 1 つとアクションを 1 つだけにして、毎回何を表示するかをビューに決定させるべきかどうか疑問に思っています。しかし、1 つのアクションだけを使用してさまざまなタイプのデータ (リリース、ブランド、機能) を表示するのはあまりよろしくありません。
また、レイアウトには次のものがあります。
$(window).bind('popstate', function (e) {
$.get(e.originalEvent.state.path, function (data) {
$('#slider').slideTo(data);
});
});
それは機能しますが、ブランド レベルに戻ると、すべてのスクリプトがリロードされます (これは、デフォルトのパーシャルではなくビューであるためです)。
これを実装するより良い方法はありますか?
ありがとう