在MVC视图中检索查询参数

时间:2014-06-09 16:02:52

标签: asp.net-mvc

在MVC 5应用程序中,我有一个像这样的ActionLink视图:

@Html.ActionLink("Publish", "Index", "Publish", item, null)

当我将鼠标悬停在链接上时,该网址会显示以下内容将作为参数发送到视图:

?Title=FilePicker&Language=JavaScript

如何访问这些参数以便我可以在第二个视图中显示它们?

例如,我尝试执行以下操作,但不知道需要进入Value属性:

<input type="text" class="form-control" id="search" value="NEED TO ACCESS TITLE PARAM HERE" />

3 个答案:

答案 0 :(得分:3)

使用:

<input type="text" class="form-control" id="search" value="@Request.QueryString["Title"]" />

为了在模型,视图和控制器之间实现更清晰的分离,建议控制器将标题发送给视图。但这也很好。

答案 1 :(得分:1)

您最好的选择是将这些值绑定到Index操作中的操作参数,并将它们添加到视图模型中。下面的一些变化应该会看到你:

public ActionResult Index(string title, string language)
{
    var model = new PublishIndexViewModel { Title = title, Language = language };
    return View(model);
}

然后在你看来:

@model PublishIndexViewModel

...

<input type="text" class="form-control" id="search" value="@Model.Title" />

这更符合ASP.NET MVC&#34;最佳实践&#34;模式比 - 并且优先 - 直接处理Request.QueryString,并且可以轻松地适应您已有的任何现有视图模型。

答案 2 :(得分:0)

@AntP是正确的。 MVC的首选方法是让动作接受参数。但是,如果不这样做,你应该使用:

Request.Unvalidated["myParam"]

无论是作为URL路径还是查询字符串的一部分传递,以及是否将其作为action方法的参数接受,都将返回参数。无论如何处理,它都可以保证返回值。

.Unvalidated部分是关闭模型验证,只要你试图从Request对象中提取任何内容,它就会愚蠢地运行。