日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

Asp.net MVC, 谁吃了我的id参数值?

發布時間:2025/5/22 c/c++ 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Asp.net MVC, 谁吃了我的id参数值? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
話說我有一個action:
public?void?SaveTask(Guid id,?string?title,?bool??isPublic)

準備讓它接收"CreateTask"和"EditTask"創建的表單:
????<form?action="SaveTask"?method="post">
????????
<dl>
????????????
<dt>標題</dt>
????????????
<dd><input?type="text"??value=""??size="20"??name="title"??id="title"??/></dd>
???????????
<dt>公開</dt>
?????????
<dd><input?type="checkbox"??value="true"??name="isPublic"??/>&nbsp;true</dd>
????????
</dl>
??????
<input?type="hidden"??value="00000000-0000-0000-0000-000000000000"??name="id"??id="id"??/>
????????
<input?type="submit"??value="創建任務"??name="submit"??id="submit"??/>
????
</form>但是每次提交表單,都會出現異常:
[FormatException:?GUID?應包含帶?4?個短劃線的?32?位數(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)。]
???System.Guid..ctor(String?g)?
+2284
???System.ComponentModel.GuidConverter.ConvertFrom(ITypeDescriptorContext?context,?CultureInfo?culture,?Object?value)?
+103
???System.ComponentModel.TypeConverter.ConvertFrom(Object?value)?
+54
???System.Web.Mvc.Controller.ConvertParameterType(Object?value,?Type?destinationType,?String?parameterName,?String?actionName)?
+161

[InvalidOperationException:?Cannot?convert?parameter?
'id'?in?action?'SaveTask'?with?value?''?to?type?'System.Guid'.]
???System.Web.Mvc.Controller.ConvertParameterType(Object?value,?Type?destinationType,?String?parameterName,?String?actionName)?
+301
???System.Web.Mvc.Controller.InvokeActionMethod(MethodInfo?methodInfo,?RouteValueDictionary?values)?
+760

[InvalidOperationException:?A?value?
is?required?for?parameter?'id'?in?action?'SaveTask'.?The?parameter?either?has?no?value?or?its?value?could?not?be?converted.?To?make?a?parameter?optional?its?type?should?either?be?a?reference?type?or?a?Nullable?type.]
???System.Web.Mvc.Controller.InvokeActionMethod(MethodInfo?methodInfo,?RouteValueDictionary?values)?
+902
???System.Web.Mvc.Controller.InvokeAction(String?actionName,?RouteValueDictionary?values)?
+263
???System.Web.Mvc.Controller.Execute(ControllerContext?controllerContext)?
+161
???System.Web.Mvc.Controller.System.Web.Mvc.IController.Execute(ControllerContext?controllerContext)?
+4
???System.Web.Mvc.MvcHandler.ProcessRequest(HttpContextBase?httpContext)?
+212
???System.Web.Mvc.MvcHandler.ProcessRequest(HttpContext?httpContext)?
+36
???System.Web.Mvc.MvcHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext?httpContext)?
+4
???System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()?
+358
???System.Web.HttpApplication.ExecuteStep(IExecutionStep?step,?Boolean
&?completedSynchronously)?+64

注意加下劃線的部分:不是明明有回傳的值"00000000-0000-0000-0000-000000000000"嗎,怎么變成了空字符串了呢?誰吃了我的參數值?
? 經過兩個小時艱苦卓絕的調查取證(其中包含了到處搜索Asp.net MVC preview 2源碼,以及試圖使用Reflector重建源項目未遂),最后靈機一動,把"id"改成"taskId",于是就一切正常了.

? 結論很顯然,"id"這個參數名在默認情況下是受到特殊對待的,只能在URL里附帶,不能post..

總結

以上是生活随笔為你收集整理的Asp.net MVC, 谁吃了我的id参数值?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。