2011-10-17 3 views
1

をレンダリングしない:ネットMVCビューでは、私は以下に示すコントローラを持っている

// 
// GET: /Customer/Details/5 
public ActionResult Details(short id) 
{ 
    ActionResult actionResult = null; 

    if (HttpContext.User.IsInRole("Admin")) 
    { 
     // this is the logic that is getting executed 
     YeagerTechWcfService.Customer cust = db.GetCustomerID(Convert.ToInt16(id)); 
     actionResult = View("Details", cust);   } 
    else 
    { 
     HttpCookie cn = Request.Cookies["strCookieName"]; 
     if (cn != null) 
     { 
      YeagerTechWcfService.Customer cust = db.GetCustomerID(Convert.ToInt16(id)); 
      actionResult = View("Details", cust); 
     } 
     else 
     { 
      TempData["ErrCode"] = "CustView"; 
      actionResult = RedirectToAction("Index", "Home"); 
     } 
    } 

    return actionResult; 
} 

私は以下のように(ActionLinkのがどこにあるか)ビューを持っている:

columns.Template(
    @<text> 
    @Ajax.ActionLink("Detail", "Details", "Customer", new { id = item.CustomerID }, 
    new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "detailCustomer" }) 
    </text> 
).Width(70); 

次のようにレンダリングされた出力は今:

<a data-ajax="true" data-ajax-mode="replace" data-ajax-update="#detailCustomer" href="/Customer/Details/2">Detail</a> 

私は、ブラウザのソースビュー内からのリンクををクリック場合は、I私の新しいビューを取得するだけで大​​丈夫。

しかし、ActionLinkを試してみると、表示されません。私はデバッグ中に、私がそのコントローラコードを打った後、詳細ビューを踏んでいることを確認することができます。現在のビューは、新しいビューに切り替えることなくそのまま維持されます。

また、私はActionLinkのをクリックすると、それは私がアドレスバーに貼り付けるときのように(デバッグ中)同じ正確なコードを実行していることがわかります。

ます。http://ローカルホスト:4514 /顧客/詳細/ 2

アドレスURLは上記に変更されません、同じコードがを実行しているにもかかわらずActionLinkの、にIをクリックします。であり、ビューはレンダリングされていません。

私は間違っていますか?同じコードが実行されていても

答えて

5

、アドレスURLは、それがAJAX要求を送信することAjax.ActionLink意味を使用している上記

に は変更されません。 AJAXの全体のポイントは、同じページに留まり、リダイレクトしないことです。 AJAX呼び出しの結果で更新されます

<div id="detailCustomer"></div> 

あなたはUpdateTargetId = "detailCustomer"がそうあなたのページにこのIDを持つコンテナを持っていることを確認してください示しています。また、Ajax.ActionLinkヘルパーが何か便利なことを行うために、jquery.unobtrusive-ajax.jsスクリプトをページに適切に組み込んでいることを確認してください。一方

フルポストバックを実行すると、あなたはおそらく、標準のリンク必要なブラウザのURLに変更したい場合:

Html.ActionLink("Detail", "Details", "Customer", new { id = item.CustomerID }, null) 
+0

ダーリンを、あなたは私が完全に私ことを忘れてしまった...絶対に正しいですリダイレクトしないで、同じページに私を保つAJAXリクエストを送信しています。あなたが提案したようなHTMLリンクに変更したり、グリッド内でAJAXポストバックを実行して同じページに留まることができます。詳細については、HTMLリンクを行い、編集のためにAJAXリンクを維持して、ユーザーにインライン編集を実行させます。本当にありがとう。 – sagesky36

関連する問題