オープンソースプロジェクトでJQueryUIタブ機能を使用しています。私はMVC3(および他のさまざまなテクノロジー)を学ぶためにこれを行っています。今、私はそれをすべて機能させています。問題は、各タブ内の部分ビューに、関連するCRUD機能からのリンクがあることです。これらのCRUDビューをディスプレイおよびエディターテンプレートとして設定しました。_Layout.cshtml
Site.cssへの参照を取得していないこれら。
編集開始
「ビューの追加」スキャフォールディング機能で、[部分ビューとして作成]ボックスをクリックすると、マスターページ機能が表示されなくなる、つまりグレー表示されることがわかりましたが、Razorでは、これが空の場合は_viewstart
ファイルを使用すると思いました。レイアウト?
編集終了
JQueryUIタブロジックを使用したDashboard.cshtmlコードは次のとおりです。
<script type="text/javascript">
$(document).ready(function() {
$("#tabs").tabs();
getContentTab (1);
});
function getContentTab(index) {
var url='@Url.Content("~/SiteAdmin/AjaxGetTab")/' + index;
var targetDiv = "#tabs-" + index;
var ajaxLoading = "<img id='ajax-loader' src='@Url.Content("~/Content")/ajax- loader.gif' align='left' height='28' width='28'>";
$(targetDiv).html("<p>" + ajaxLoading + " Loading...</p>");
$.ajax({
type: 'get',
url: url,
cache: false,
success: function(result) {
$(targetDiv).html(result);
}
});
}
<div id="tabs">
<ul>
<li><a href="#tabs-1" onclick="getContentTab(1);">Transaction Type</a> </li>
<li><a href="#tabs-2" onclick="getContentTab(2);">Direction Type</a></li>
<li><a href="#tabs-3" onclick="getContentTab(3);">User Type</a></li>
<li><a href="#tabs-4" onclick="getContentTab(4);">Currency Type</a></li>
</ul>
<div id="tabs-1">
</div>
<div id="tabs-2">
</div>
<div id="tabs-3">
</div>
<div id="tabs-4">
</div>
</div>
タブを作成してリストオブジェクトを作成する方法を知る必要がある場合は、AjaxGetTabアクションメソッドを次に示します。
/// <summary>
/// AJAX action method to obtain the correct Tab to use.
/// </summary>
/// <param name="index">Tab number</param>
/// <returns>Partial View</returns>
public ActionResult AjaxGetTab(int id)
{
string partialViewName = string.Empty;
object model = null;
//--Decide which view and model to pass back.
switch (id)
{
case 1:
partialViewName = "_TransactionType";
model = db.TransactionTypes.ToList();
break;
case 2:
partialViewName = "_DirectionType";
model = db.DirectionTypes.ToList();
break;
case 3:
partialViewName = "_UserType";
model = db.UserTypes.ToList();
break;
case 4:
partialViewName = "_CurrencyType";
model = db.CurrencyTypes.ToList();
break;
case 5:
partialViewName = "_tabError";
break;
}
return PartialView(partialViewName,model);
}
現在、 TransactionTypeに取り組んでいるので、次の_TransctionType.cshtml
コードを使用しますPartialView
。
@model IEnumerable<Accounts.Models.TransactionType>
<p>
@Html.ActionLink("Create New", "CreateTransactionType")
</p>
<table>
<tr>
<th>
Record Status
</th>
<th>
Description
</th>
<th>
Created Date
</th>
<th>
Amended Date
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.RecordStatus)
</td>
<td>
@Html.DisplayFor(modelItem => item.Description)
</td>
<td>
@Html.DisplayFor(modelItem => item.CreatedDate)
</td>
<td>
@Html.DisplayFor(modelItem => item.AmendedDate)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.id }) |
@Html.ActionLink("Details", "Details", new { id=item.id }) |
@Html.ActionLink("Delete", "Delete", new { id = item.id })
</td>
</tr>
}
これで、「編集」と削除ActionLink
にはがEditorTemplate
あり、詳細にはDisplayTemplate
必要なTransactionType.cshtmlを含むフォルダーがあります。これらのビューには_Layout
Site.cssが適用されていません。「編集」コードベースのサンプルコードは次のとおりです。
_EditTransactionType.cshtml:
@model Accounts.Models.TransactionType
@using (Html.BeginForm())
{
@Html.EditorForModel()
<p>
<input type="submit" value="Save" />
</p>
}
そして、これが/ Views / SiteAdmin/EditorTemplateにあるTransactionType.cshtmlです。
@model Accounts.Models.TransactionType
<fieldset>
<legend>Transaction Type</legend>
<div class="editor-label">
@Html.LabelFor(model => model.RecordStatus)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.RecordStatus)
@Html.ValidationMessageFor(model => model.RecordStatus)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Description)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Description)
@Html.ValidationMessageFor(model => model.Description)
</div>
</fieldset>
これで、各テンプレートにSite.cssへの参照を配置できますが、これを行うためのよりクリーンな方法はありますか?私は何かが足りないのですか?