我有一個A - Z目錄'小部件',我在每一頁上。如果用戶在主頁上,他們點擊目錄中的某些內容,我想加載目錄頁面,並加載相應的結果。但是,如果用戶在目錄頁面上,並且他們點擊了某些內容,我想異步加載結果而不進行頁面刷新。這是一個'黑客',如果是的話是否有更好的方法來確定返回哪個ActionResult?
目錄窗口小部件具有指向GroupController上的DirectoryResult操作方法的鏈接,如果它們位於目錄頁面上,它通常會返回一個PartialView。但是,如果它們不在目錄頁面上,我將重定向到主目錄操作方法,該方法返回一個View並加載整個頁面。
這是有問題的代碼:「這是一個黑客」
public ActionResult DirectoryResult(string search)
{
if (Request.IsAjaxRequest())
{
var groups = _groupService.GetGroupsBySearchExpression(search);
var premiumGroups = _groupService.FilterPremiumGroups(groups);
return PartialView(new FundDirectoryViewModel
{
Groups = groups,
PremiumGroups = premiumGroups
});
}
else
{
TempData[UIMessageDataKeys.FundDirectorySearch] = search;
return RedirectToAction("Directory", "Group");
}
}
我發現這個在辦公室的球員之一,他的直接反應是。我不知道是否同意他的意見,因爲我不知道有什麼更好的辦法。
以供參考,這是每一個頁面上存在小部件的定義:
<div id="DirectoryList" class="directory-list">
<span>Fund Directory</span>
<% var letters = new [] { "A", "B", "C", "D", "E", "F", "G", "H", "I", ... }; %>
<% var current = (Model.Search.IsNotNullOrEmpty()) ? Model.Search : "A"; %>
<% foreach (var letter in letters) { %>
<span>
// use HtmlHelper extension to generate links as our system needs them
<%= Html.RouteActionLink("funddirectory", "DirectoryResult"
, letter
, (letter.ToLower() == current) ? new { @class = "active" } : new { @class = "" })%>
</span>
<%} %>
</div>
有我來決定我是否應該返回PartialView或根據在頁面上查看一個更好的方式請求來自?
這不是黑客攻擊的。 – 2010-09-04 12:30:26