2013-06-28 31 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 
} 
相关问题