url中的ASP.NET MVC POST参数

时间:2009-11-05 17:27:16

标签: asp.net-mvc post

url:/ jobs / UpdateJobResults / GUIDHERE

当我对下面的函数发帖子时,guid id总是空白的,我可以使用上面的格式在URL中发布GUID(因为表单正文有结果字典)吗?

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult UpdateJobResults(Guid Id, Dictionary<string, object> results)
{

}

4 个答案:

答案 0 :(得分:2)

您可以尝试修改Html.BeginForm作为路线值...

Html.BeginForm("myAction", "myController", new { Id = myGuid });

显然,myGuid是你的参数。

如果您的路由设置正确,MVC将知道在URL(和/或查询字符串)中使用此值而不是在Request.Form数据中发布您的表单...

祝你好运!

答案 1 :(得分:0)

是的,默认路由的第3个参数是id。在大多数示例中,它是一个整数,但Guid应该可以工作。

您是否尝试将id参数作为字符串而不是Guid?通常情况下,MVC足够智能,可以为您提供您正在寻找的对象类型,但我还没有尝试使用Guid。期望id成为字符串可能会有效。那么至少你知道你的路由工作正常。

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult UpdateJobResults(string id, Dictionary<string, object> results)
{

}

您使用默认路线还是设置了自己的路线?

修改:所以,您正在使用自己的路线。请编辑您的问题以包含这些问题。另外,你说它适用于GET,但不适用于POST。你的行动看起来是什么样的GET请求?我想我们需要更多的信息来帮助解决这个问题。您确定客户端请求在网址中包含Guid吗?

答案 2 :(得分:0)

我相信MVC使用Convert.ChangeType进行转换。此方法不支持Guids。我的建议是将参数更改为字符串并在方法中将其转换。

答案 3 :(得分:0)

最终被创建的模型绑定器正在查找帖子上的guid而不是查询字符串