2014-07-09 73 views
0

我正在使用ASP.net MVC與剃刀引擎。cshtml查看不呈現

我有一個頁面和一個按鈕,當點擊按鈕時,我使用Ajax在我的控制器中調用ActionResult。 Ajax調用:

$.ajax({ 
    type: "GET", 
    url: "/Home/Review", 
    success: function (data) { 
     //alert("yay"); 
    } 
}); 

ActionResult方法被擊中很好,但它不會加載speified的看法。 代碼:

public ActionResult Review() 
{ 
    return View(); 
} 

目前的觀點Index.cshtml當回顧()被擊中我想Review.cshtml可以在屏幕上呈現。 (應呈現爲一個完整的視圖,裏面Index.cshtml還不如局部視圖)

我曾嘗試 - return View("Review");return View("Review.cshtml");return View("..\Views\Home\Review.cshtml);

我不能使用 - tml.BeginForm("Action", "Controller", FormMethod.Post);(見我的其他問題MVC submit button not firing

+0

的''的success'回調函數的參數data',應包含來自服務器的響應。 – haim770

+0

你想在Index中包含Review.cshtml的內容嗎?如果不是,你爲什麼要做ajax電話? – NicoD

+0

@NicoD不,我想加載審查,而不是索引..喜歡導航到不同的頁面 – DNKROZ

回答

2

直接寫入響應於所述屏幕

success: function (data) { 
    document.write(data) } 
+3

也許您應該閱讀:[爲什麼document.write被認爲是「不好的做法」?](http://stackoverflow.com/問題/ 802854/why-is-document-write-considered-a-bad-practice) – NicoD

+0

有趣 - 謝謝 – DNKROZ

+0

@NicoD謝謝我沒注意到這個缺點 – Arjuna

0

ajax之後,你應該渲染一個局部視圖來將返回結果添加到主視圖(索引)。

Index.cshtml

$.ajax({ 
    type: "GET", 
    url: "/Home/Review", 
    success: function (data) { 
     $("#container").html(data); 
     //alert("yay"); 
    } 
... 

<div id="container"></div> 

控制器

public ActionResult Review() 
{ 

    return PartialView(); 
} 

如果你想阿賈克斯後重定向你可以使用類似以下內容:

Index.cshtml

$.ajax({ 
    type: "GET", 
    url: "/Home/Review", 
    success: function (data) { 
     window.location.href = data.url; 
    } 
... 

控制器

public ActionResult Review() 
{ 

    return Json(new { url = "some url" }, JsonRequestBehavior.AllowGet); 
} 
+0

這是爲了部分視圖,但我想渲染一個完整的視圖 – DNKROZ

+1

@DNKROZ,如果你想渲染整個頁面,爲什麼你使用ajax後? –

+0

因爲我使用的是jQuery UI按鈕,並且點擊處理程序阻止了'Html.BeginForm'的使用 – DNKROZ