日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

發布時間:2025/5/22 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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参数值?的全部內容,希望文章能夠幫你解決所遇到的問題。

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