在我的c#.net项目中,当我尝试启动onClick事件时,我收到此错误。我想我可能会错过一个重要的汇编参考,但无法弄清楚为什么会出现这个错误。直到最近,该项目工作正常,我所做的一些修改导致了这个问题
问题
应用程序中的服务器错误
>应用程序中的服务器错误。
参数字典包含方法'System.Web.Mvc.ActionResult索引(Double,Double,System.String,System.String,System)的非可空类型'System.Double'的参数'lat'的空条目'MyDisplayTracking.Controllers.HomeController'中的.String,System.String,System.String)'。可选参数必须是引用类型,可空类型,或者声明为可选参数。 参数名称:参数
描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.ArgumentException:参数字典包含方法'System.Web.Mvc.ActionResult Index(Double,Double,System)的非可空类型'System.Double'的参数'lat'的空条目。 'MyDisplayTracking.Controllers.HomeController'中的String,System.String,System.String,System.String,System.String)'。可选参数必须是引用类型,可空类型,或者声明为可选参数。 参数名称:参数
来源错误:
在执行当前Web请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息。
堆栈追踪:
[ArgumentException:参数字典包含非可空类型'System.Double'的参数'lat'的空条目,用于方法'System.Web.Mvc.ActionResult索引(Double,Double,System.String,System。 'MyDisplayTracking.Controllers.HomeController'中的String,System.String,System.String,System.String)'。可选参数必须是引用类型,可空类型,或者声明为可选参数。
参数名称:参数]
System.Web.Mvc.ActionDescriptor.ExtractParameterFromDictionary(ParameterInfo parameterInfo,IDictionary 2 parameters, MethodInfo methodInfo) +664911
System.Web.Mvc.<>c__DisplayClass1.<Execute>b__0(ParameterInfo parameterInfo) +18
System.Linq.WhereSelectArrayIterator
2.MoveNext()+85
System.Linq.Buffer 1..ctor(IEnumerable
1来源)+217
System.Linq.Enumerable.ToArray(IEnumerable 1 source) +78
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary
2个参数)+133
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext,ActionDescriptor actionDescriptor,IDictionary 2 parameters) +27
System.Web.Mvc.Async.<>c__DisplayClass42.<BeginInvokeSynchronousActionMethod>b__41() +28
System.Web.Mvc.Async.<>c__DisplayClass8
1.b__7(IAsyncResult _)+12
System.Web.Mvc.Async.WrappedAsyncResult 1.End() +57
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +50
System.Web.Mvc.Async.<>c__DisplayClass39.<BeginInvokeActionMethodWithFilters>b__33() +58
System.Web.Mvc.Async.<>c__DisplayClass4f.<InvokeActionMethodFilterAsynchronously>b__49() +237
System.Web.Mvc.Async.<>c__DisplayClass37.<BeginInvokeActionMethodWithFilters>b__36(IAsyncResult asyncResult) +12
System.Web.Mvc.Async.WrappedAsyncResult
1.End()+57
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult)+50
System.Web.Mvc.Async。&lt;&gt; c__DisplayClass2a.b__20()+24
System.Web.Mvc.Async。&lt;&gt; c__DisplayClass25.b__22(IAsyncResult asyncResult)+126
System.Web.Mvc.Async.WrappedAsyncResult 1.End() +57
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +45
System.Web.Mvc.<>c__DisplayClass1d.<BeginExecuteCore>b__18(IAsyncResult asyncResult) +14
System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +25
System.Web.Mvc.Async.WrappedAsyncResult
1.End()+62
System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult)+61
System.Web.Mvc.Async。&lt;&gt; c__DisplayClass4.b__3(IAsyncResult ar)+25
System.Web.Mvc.Async.WrappedAsyncResult 1.End() +62
System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +49
System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10
System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__3(IAsyncResult asyncResult) +28
System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +25
System.Web.Mvc.Async.WrappedAsyncResult
1.End()+62
System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)+49
System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result)+9
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+9042429
System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean&amp; completedSynchronously)+184
版本信息:Microsoft .NET Framework版本:4.0.30319; ASP.NET版本:4.0.30319.1016
家庭控制器:
public ActionResult MyStores(double lat, double lng, string storename, string city, string state, string distributor, string channels)
{
MyStoresModel r = new MyStoresModel();
r.stores = new List<StoreDataModel>();
using (DisplayTrackingEntities ctx = new DisplayTrackingEntities())
{
我试图从我的索引视图中调用它,如下所示:
<input type="hidden" id="lat" name="lat" />
<input type="hidden" id="lng" name="lng" />
<div class="row">
<div class="form-actions">
<button class="btn" onclick="return UseGPS();">Use GPS</button>
<button class="btn" onclick="return Search();">Search</button>
</div>
</div>
答案 0 :(得分:2)
您正在获取System.ArgumentException
,因为您尚未为任何隐藏字段指定值。您的视图应如下所示:
<input type="hidden" id="lat" name="lat" value="1.234" />
<input type="hidden" id="lng" name="lng" value="5.678" />
答案 1 :(得分:1)
您可以将默认值分配给lat&amp;在你的动作的参数列表中如下:
public ActionResult MyStores(double lat = 0.0,double lng = 0.0,string storename ...
如果这些字段在页面上有值,则它们会回发并覆盖默认值。如果他们没有值,他们就不会回发(因此为空),因此字段将保留默认值。基本上,这些字段现在是可选参数。