2014-02-13 24 views
4

我有这样的如何挑选查询字符串在ASP.Net MVC4剃刀

http://localhost:1243/home/index/?skip_api_login=1&api_key=145044622175352&signed_next=1 

一个URL现在home是我的控制器index是我的行动。

但请告诉我,我怎么能在asp.net中MVC4剃须刀skip_api_loginapi_keysigned_next 值。

我想在控制器和视图中使用这些值。请告诉我如何挑选它们。

回答

6

你可以有你的控制器动作把它们作为参数和模型绑定将其值设置形成的查询字符串:

public ActionResult Index(string skip_api_login , string api_key, int signed_next) 
{ 
    ... 
} 

或事件更好,写一个视图模型:

public class MyViewModel 
{ 
    public string Skip_api_login { get; set; } 
    public string Api_key { get; set; } 
    public int Signed_next { get; set; } 
} 

您的索引操作将作为参数:

public ActionResult Index(MyViewModel model) 
{ 
    ... 
    return View(model); 
} 

然后您的视图可能会强类型的这种观点模型,你就可以访问这些值:

@model MyViewModel 
... 
@Html.DisplayFor(x => x.Skip_api_login) 
@Html.DisplayFor(x => x.Api_key) 
@Html.DisplayFor(x => x.Signed_next) 

当然,你总是可以从Request对象访问查询字符串参数组成:

@Request["skip_api_login"] 

但你可能不想在你看来做这样的事情。请记住,视图应该只与控制器操作以视图模型的形式提供的值一起工作。视图不应该从请求,会话,viewdatas,视图包,数据库以及任何想到的内容中获取值。 ASP.NET MVC中的视图有一个单独的职责:使用视图模型中的信息。

+0

bot如果其中一个在url中不可用,会发生什么情况。也是我需要在RouteConfig文件中注册这些密钥 –

+0

当我看到最后一部分时,我的眼睛流血了一点:) –

+1

@SimonWhitehead为什么? –