2009-10-07 119 views
4

中查找調用方的方法我在我的「CartController」上有一個Action方法,該方法返回一個ActionResult的AddtoCart。我遇到的問題是,我從antoher控制器發佈到AddtoCart我要添加的產品的ID,然後繼續。我對驗證沒有任何問題;然而,當我想要重定向到稱爲Action的View時!ModelState.IsValid,我不知道誰叫我(或在哪裏找到它)。ASP.NET MVC在!ModelState.IsValid

幾個不同的控制器可能會發布到該方法。 ViewData中有什麼我可以用來找出誰叫我的操作方法?

回答

4

像你以後對我聽起來。

HTHS,
查爾斯

+0

我想,這一點,但它給實際的URL,我不能只返回查看(Request.UrlReferrer)如果在的ModelState錯誤。 雖然謝謝! – Mike

+0

你可以把你的ModelState放入TempData,然後重定向到Request.UrlReferrer?您發佈並隨後必須重定向的操作/視圖肯定需要獲取自己視圖的數據/內容......?沒有? – Charlino

0

我不認爲這些控制器正在發佈帖子。控制器正在接受請求(發佈)並做一些工作,檢索數據,然後選擇將哪個視圖呈現回瀏覽器。

因此,您的操作方法通常是從網絡瀏覽器(頁面上的鏈接,javascript)調用的。這就是爲什麼我建議你將其他參數傳遞給Action方法,然後根據該值選擇合適的視圖進行回顯。

public ActionResult AddToCart(int productID, string caller) 
    { 
     //add to cart logic 

     switch (caller) 
     { 
      case "this": 
       { 
        //get data for this view 
        return View("this"); 
       } 
      case "that": 
       { 
        //get data for that view 
        return View("that"); 
       } 
      default: 
       { 
        //get data for default view 
        return View("default"); 
       } 
     } 
    } 

希望我深知你有什麼問題的本質......

0

我覺得你這樣的事情之後是:

[...]如果你不「噸介意你的代碼依賴於您所使用的特定視圖引擎,你可以看看ViewContext.View財產並投它WebFormView

var viewPath = ((WebFormView)ViewContext.View).ViewPath; 

related question關於從控制器方法中獲取視圖名稱。

Request.UrlReferrer 

讓我知道,如果你不:

相關問題