在mvc 3中从url读取http get var的问题

时间:2011-10-19 06:08:13

标签: html asp.net-mvc-3

我有这个代码创建一个网址

<a href="ContactInformation/CreateContactInformation/dossierId=@Model.DossierId" class="ContactInformationEdit">Add New</a>

(我无法找到如何创建一个使用动作,控制器,对象的动作链接以及我可以在javascript中使用类名的地方)

这会提供类似http://localhost:51730/ContactInformation/CreateContactInformation/dossierId=1

的链接

然后我有一个控制器动作

[HttpGet]
    public ActionResult CreateContactInformation(int? dossierId)
    {
        return PartialView("ContactInformationCreate", new ContactInformationViewModel(dossierId.Value));
    }

但是如果我在该代码中放置一个断点,那么变量只是“null”做一个请求参数给出相同的结果

3 个答案:

答案 0 :(得分:3)

<a href="ContactInformation/CreateContactInformation/?dossierId=@Model.DossierId" class="ContactInformationEdit">Add New</a>

即。你错过了吗?在查询字符串之前

答案 1 :(得分:2)

ContactInformation/CreateContactInformation/dossierId=@Model.DossierId 

应该是

ContactInformation/CreateContactInformation?dossierId=@Model.DossierId

Url.Action帮助器仅用于生成链接。你可以在任何你喜欢的东西,锚或任何其他东西使用该链接。但是内置ActionLink重载也可以生成您想要的内容。

@Html.ActionLink("Add New", "CreateContactInformation", "ContactInformation", new {dossierId = @Model.DossierId}, new {@class="ContactInformationEdit"})

上面的代码也会考虑您的路线配置

答案 2 :(得分:0)

你有正确的路由吗?

routes.MapRoute( _
"ContactInformation" _
"ContactInformation/CreateContactInformation/{parameters}" _
new With { .controller = "ContactInformation", .action = "CreateContactInformation"})

然后

<a href="ContactInformation/CreateContactInformation?dossierId=@Model.DossierId" class="ContactInformationEdit">Add New</a>