网址:/工作/ UpdateJobResults/GUIDHEREASP.NET MVC POST参数中的URL
当我做一个帖子下面这个函数的GUID ID始终是空白的,我可以用上面的格式张贴GUID在URL中(因为表单体有结果字典)?
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult UpdateJobResults(Guid Id, Dictionary<string, object> results)
{
}
网址:/工作/ UpdateJobResults/GUIDHEREASP.NET MVC POST参数中的URL
当我做一个帖子下面这个函数的GUID ID始终是空白的,我可以用上面的格式张贴GUID在URL中(因为表单体有结果字典)?
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult UpdateJobResults(Guid Id, Dictionary<string, object> results)
{
}
结束了创建模型绑定一直在寻找的形式为GUID的岗位,而不是查询字符串
是的,默认路由的第三个参数是id
。在大多数例子中是一个整数,但Guid应该工作。
你用id
参数作为字符串而不是Guid来试试吗?通常情况下,MVC足够聪明,可以为您提供您正在寻找的对象的类型,但我没有使用Guid尝试过。期望id
是一个字符串可能工作。那么至少你会知道你的路由工作正常。
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult UpdateJobResults(string id, Dictionary<string, object> results)
{
}
您是使用默认路由还是设置了自己的路由?
编辑:所以,你使用自己的路线。请修改您的问题以包含这些问题。另外,你说它适用于GET,但不适用于POST。 GET请求触发了什么动作?我认为我们需要更多的信息才能帮助解决这个问题。你确定客户端请求包含URL中的Guid吗?
自己的路线和使用模型联编程序来投射GUID,它在GET请求上正常工作,但不适用于POST,它的ASP.NET MVC REST如果有任何区别 – monkeylee 2009-11-06 10:13:51
您可以尝试修改您通过传递这是一个路线值Html.BeginForm
...
Html.BeginForm("myAction", "myController", new { Id = myGuid });
显然这里myGuid是您的PARAM。
如果您的路由设置正确,MVC就知道网址中包含这个值(和/或查询字符串),而不是在数据的Request.Form来发表您的形式...
祝你好运!
PS,如果这不起作用,请张贴您的路线,重新使用此操作以查看这可能是否有帮助... – Funka 2009-11-05 17:53:06
这只是为表单构建目标网址的一种不同方式。它会生成与OP所说的相同的URL。 – CoderDennis 2009-11-05 20:35:13
我已经使用MVC REST,因此从客户端应用程序没有html表单发布 – monkeylee 2009-11-06 10:30:45
我相信MVC使用Convert.ChangeType进行转换。此方法不支持Guid。我的建议是将参数更改为一个字符串并将其转换为方法。
你可以包括你的路由(如果不是默认其他)? – Mayo 2009-11-05 17:39:17
适合我在香草设置(默认路由,没有自定义模型绑定),我使用jQuery的帖子例如$ .post(“Home/Test/A070D861-197C-491B-9B8B-0092B43C3172”,{test:“x”}); 你有没有为System.Guid设置一个自定义的模型绑定器? – 2009-11-06 13:42:01