2013-06-28 41 views
0

無論如何在MVC強類型視圖中找出控制器中的哪個ActionResult通過了該模型?我不想在此階段在模型中添加額外的字段,或者在我的查詢字符串中添加任何內容?它甚至有可能嗎? 對不起,這可能是一個noob問題。任何幫助表示讚賞。MVC視圖如何確定哪個ActionResult傳遞了模型?

+3

這種違反[MVC架構](http://en.wikipedia.org/wiki/Model-view-controller)的原則。您現在希望視圖瞭解控制器。 – vcsjones

+0

你爲什麼想這樣做? – Meryovi

+0

我有一套像μC寄存器這樣的4個布爾值,我想在我的視圖中進行操作,而不是在模型中進行操作,我發現在視圖中執行此操作更容易。 –

回答

3

沒關係喃喃自語有關的MVC架構的原理驗證;)

將此代碼放在您的視圖:

string action = @ViewContext.Controller.ValueProvider.GetValue("action").RawValue.ToString(); 
+0

謝謝,這非常有幫助。 –

1

行動應該告訴視圖。而不是增加額外的字段到模型中,你可以在一個視圖模型把它包:

public class MyViewModel 
{ 
    public MyModel InnerModel {get; set; } 
    public string ActionName {get; set; } 
} 

或者使用ViewBag:

ViewBag.ActionName = "MyActionName"; 
3

在視圖中可以接取的範圍內,那麼你可以檢索動作/

@{ 
    string controller = RequestContext.RouteData.Values["controller"].ToString(); 
    string action = RequestContext.RouteData.Values["action"].ToString(); 
} 

然後你就可以在視圖中使用它來作一些有條件的

:這樣從當前請求控制器
@if(action.Equals("some name")) 
{ 
    //Do stuff here 
} 
相關問題